youtube-dl や youtube-dlc の両方の機能を持ち更に機能強化されているよう.
$ wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp https://github.com/yt-dlp/yt-dlp/releases/latest/download/SHA2-512SUMS $ sha512sum -c ./SHA2-512SUMS 2>&1 | grep OK yt-dlp: OK $ install -m700 ./yt-dlp ~/bin/ $ rm ./yt-dlp ./SHA2-512SUMS
$ yt-dlp -U
Gyao!で大抵以下のようなオプションで 480p の動画を指定しています.
--format 'bestvideo[height<=480]+bestaudio/best[height<=480]'
新作などの30分番組はこれで300MB 行かないくらいのファイルサイズになります. しかし,一挙配信などでは600MB 近くのファイルサイズに.
こういった動画を -F
オプションでフォーマットのリストを確認すると同じ解像度でたくさんの動画があります.
$ yt-dlp -I 1 -F https://gyao.yahoo.co.jp/title/%E8%81%96%E6%88%A6%E5%A3%AB%E3%83%80%E3%83%B3%E3%83%90%E3%82%A4%E3%83%B3%5BB-ch%5D/63a953c1-d447-494b-a2e2-68da05819403 | grep x480 dash-eb6a0108-2030-4c37-92e1-d10d562d3079-0 mp4 640x480 | ~271.00MiB 1494k dash | avc1.4d001e 1494k video only DASH video, mp4_dash dash-eb6a0108-2030-4c37-92e1-d10d562d3079-1 mp4 640x480 | ~271.00MiB 1494k dash | avc1.4d001e 1494k video only DASH video, mp4_dash hls-1783-0 mp4 640x480 | ~323.44MiB 1783k m3u8 | avc1.4d001e 1783k video only hls-1783-1 mp4 640x480 | ~323.44MiB 1783k m3u8 | avc1.4d001e 1783k video only dash-66c32504-8592-45b6-8300-b841cd6f59f6-0 mp4 640x480 | ~543.27MiB 2995k dash | avc1.4d001e 2995k video only DASH video, mp4_dash dash-66c32504-8592-45b6-8300-b841cd6f59f6-1 mp4 640x480 | ~543.27MiB 2995k dash | avc1.4d001e 2995k video only DASH video, mp4_dash hls-3434-0 mp4 640x480 | ~622.94MiB 3434k m3u8 | avc1.4d001e 3434k video only hls-3434-1 mp4 640x480 | ~622.94MiB 3434k m3u8 | avc1.4d001e 3434k video only hls-1783-2 mp4 640x480 | ~323.44MiB 1783k m3u8 | avc1.4d001e 1783k mp4a.40.2 0k hls-1783-3 mp4 640x480 | ~323.44MiB 1783k m3u8 | avc1.4d001e 1783k mp4a.40.2 0k hls-3434-2 mp4 640x480 | ~622.94MiB 3434k m3u8 | avc1.4d001e 3434k mp4a.40.2 0k hls-3434-3 mp4 640x480 | ~622.94MiB 3434k m3u8 | avc1.4d001e 3434k mp4a.40.2 0k
ビットレートも指定するようにしてだいたい同じくらいのファイルサイズになりました.
--format 'bestvideo[height<=480][tbr<1500]+bestaudio/best[height<=480]'
$ yt-dlp --skip-download --sub-lang=ja --write-auto-sub T5m_j4a6dBc $ ls -s The\ state\ of\ the\ free\ software\ movement\ \[T5m_j4a6dBc\].ja.vtt 616 'The state of the free software movement [T5m_j4a6dBc].ja.vtt' $ head The\ state\ of\ the\ free\ software\ movement\ \[T5m_j4a6dBc\].ja.vtt WEBVTT Kind: captions Language: ja 00:00:00.000 --> 00:00:02.230 align:start position:0% 通常<00:00:00.174><c>は</c><00:00:00.348><c>起こり</c><00:00:00.522><c>ます</c><00:00:00.696><c>が</c><00:00:00.870><c>、</c><00:00:01.044><c>もちろん</c><00:00:01.218><c>今起こっ</c><00:00:01.392><c>て</c><00:00:01.566><c>い</c><00:00:01.740><c>ます</c><00:00:01.914><c>。</c> 00:00:02.230 --> 00:00:04.230 align:start position:0% 通常は起こりますが、もちろん今起こっています。
そのまま読むために整形してみる.
$ awk 'FNR<=4 || ($0 ~ /^$|-->|\[|\]|</){next} !a[$0]++' The\ state\ of\ the\ free\ software\ movement\ \[T5m_j4a6dBc\].ja.vtt | tr -d "\n" | sed -e 's/。/。\n/g' | head -2 通常は起こりますが、もちろん今起こっています。 特にgnuソフトウェアだけでなく、他のフリーソフトウェアにも貢献してくれたすべての人に感謝します。
プレイリスト( PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4 )中のタイトルに「ラジオをする」という文字列が含まれているもののみダウンロードする.
$ yt-dlp --match-filter "title~=ラジオをする" -f 251 PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4 [youtube:tab] PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4: Downloading webpage [youtube:tab] PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4: Downloading API JSON with unavailable videos [download] Downloading playlist: TVアニメ「その着せ替え人形は恋をする」 [youtube:tab] playlist TVアニメ「その着せ替え人形は恋をする」: Downloading 45 videos [download] Downloading video 1 of 45 [download] TVアニメ「その着せ替え人形は恋をする」第1弾PV does not pass filter title~=ラジオをする, skipping .. [download] Downloading video 2 of 45 [download] TVアニメ「その着せ替え人形は恋をする」第2弾PV does not pass filter title~=ラジオをする, skipping .. [download] Downloading video 3 of 45 [youtube] A3vKWR3WXWk: Downloading webpage [youtube] A3vKWR3WXWk: Downloading android player API JSON [info] A3vKWR3WXWk: Downloading 1 format(s): 251 [download] 【公式】その着せ替え人形はラジオをする(第1回) [A3vKWR3WXWk].webm has already been downloaded
--embed-thumbnail
で埋め込める
$ yt-dlp -f 140 --embed-thumbnail A3vKWR3WXWk
ファイラーでもサムネイルが表示される
webmには埋め込めなかった
ERROR: Supported filetypes for thumbnail embedding are: mp3, mkv/mka, ogg/opus/flac, m4a/mp4/mov
※yt-dlp 2022.03.08 でabema.tvに対応
普通にダウンロードすると以下のようにタイトルが「第1話」のようになる
$ yt-dlp -f 184 https://abema.tv/video/episode/593-1_s1_p1 : [download] Destination: 第1話 [593-1_s1_p1].mp4
単話ではなくタイトルのURLを指定してOUTPUT TEMPLATEのplaylist+titleを使うと良さそう (単話指定だとNAになる)
$ yt-dlp -f 184 -o '%(playlist)s %(title)s' https://abema.tv/video/title/593-1 : [download] Destination: 阿波連さんははかれない 第1話.mp4
公開当初 %(title)s
が 第1話
のようになっているが,数日経つと 第1話 サブタイトル
のようになって再ダウンロードされてしまう.
少しわかりにくくなるけどサブタイトルを諦めて %(episode_number)s
を使っている.(総集編で話数が飛んだりした場合も連番になるので実際の話数とずれると思う)
-o '%(playlist)s #%(episode_number)s [%(id)s].%(ext)s'
総集編は 100,PVは 500 になった.
※yt-dlp 2022-07-18で直った
[download] 0.4% of ~269.75MiB at 20.63MiB/s ETA Unknown (frag 1/278)ERROR: base None exceeds table length 58
yt-dlp 2022.06.22.1 〜 2022.06.29 で発生.yt-dlp 2022.05.18 や streamlink は問題ないので恐らく yt-dlp のbug.
issue
ERROR: unable to open for writing: [Errno 36] File name too long: '怪人開発部の黒井津さん\u3000第1話\u3000世界征服を企てる悪の秘密結社で、人々を恐怖に陥れる怪人が生まれ出るその時、彼女は密かに涙した [6290247878001].fdash-698cbf58-3431-4bb3-978b-fc37d81b51f3-1.m4a.part-Frag1.part'
#### ファイル名帳を制限
--trim-filenames
で長さを制限してしまう
日本語ファイル名の場合ファイルシステムをexfatにするとext4などより長いファイル名が使える.
ダウンロード中の一時ファイルでファイル名長が足りない,でもダウンロード完了時のファイル名長は大丈夫といった場合 -P
でexfat領域を一時領域にして回避できる.専用の一時領域を作っておいても良さそう.
$ dd if=/dev/zero of=./.exfat.img bs=1M count=512 $ /sbin/mkfs.exfat ./.exfat.img $ mkdir exfat $ sudo mount -o uid=`id --user`,gid=`id --group` ./.exfat.img ./exfat $ yt-dlp -P ./exfat/ https://gyao.yahoo.co.jp/title/%E6%80%AA%E4%BA%BA%E9%96%8B%E7%99%BA%E9%83%A8%E3%81%AE%E9%BB%92%E4%BA%95%E6%B4%A5%E3%81%95%E3%82%93/61d79cb4-e194-4c50-8bf6-e8382c19f67e
-P
と -o
を指定時に -o
内に絶対パスを利用すると使えないよう(-Pは無視される)
WARNING: --paths is ignored since an absolute path is given in output template
コメント