ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
linux:yt-dlp

yt-dlp

youtube-dlyoutube-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

tips

Gyao! で解像度指定をしていてもファイルサイズが大きくなるコンテンツ

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

abema.tv

※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

タイトルの問題2

公開当初 %(title)s第1話 のようになっているが,数日経つと 第1話 サブタイトル のようになって再ダウンロードされてしまう. 少しわかりにくくなるけどサブタイトルを諦めて %(episode_number)s を使っている.(総集編で話数が飛んだりした場合も連番になるので実際の話数とずれると思う)

-o '%(playlist)s #%(episode_number)s [%(id)s].%(ext)s'

総集編は 100,PVは 500 になった.

ERROR: base None exceeds table length 58

※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領域に保存

exFAT領域にテンポラリファイルを作る

ダウンロード中の一時ファイルでファイル名長が足りない,でもダウンロード完了時のファイル名長は大丈夫といった場合 -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

コメント

コメントを入力. Wiki文法が有効です:
   ____ __  __   ___   _____   ___ 
  /  _/ \ \/ /  / _ ) / ___/  / _ \
 _/ /    \  /  / _  |/ /__   / // /
/___/    /_/  /____/ \___/  /____/
 
linux/yt-dlp.txt · 最終更新: 2023/03/22 21:53 by matoken