YouTubeで配信されているラジオ番組の1話を視聴して面白かったのでダウンロードして移動中などに聞こうと思いました.ダウンロードにはyt-dlpを利用しました.
使い方はyoutube-dlとほぼ同じですが少し動作が違う部分があるので,NEW FEATURES, Differences in default behavior に目を通しておくといいと思います.
対応サイトは以下を見ると現在1500以上ありそうです.
$ curl -s https://raw.githubusercontent.com/yt-dlp/yt-dlp/master/supportedsites.md | grep -E -- ^\ -\ ** | wc -l 1532
ということでまずは導入.いくつか導入方法がありますが,シングルバイナリをダウンロードするのがお手軽かなと思います.
$ 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
アップデートは -U
オプションをつけて実行するだけでOKなのでお手軽です.
$ yt-dlp -U Latest version: 2022.03.08.1, Current version: 2022.03.08.1 yt-dlp is up to date (2022.03.08.1)
まずは -F
オプションでフォーマットを確認.
$ yt-dlp -F https://www.youtube.com/watch?v=A3vKWR3WXWk [youtube] A3vKWR3WXWk: Downloading webpage [youtube] A3vKWR3WXWk: Downloading android player API JSON [info] Available formats for A3vKWR3WXWk: ID EXT RESOLUTION FPS │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO ──────────────────────────────────────────────────────────────────────────────────────────────────────────── sb2 mhtml 48x27 │ mhtml │ images storyboard sb1 mhtml 80x45 │ mhtml │ images storyboard sb0 mhtml 160x90 │ mhtml │ images storyboard 139 m4a audio only │ 11.91MiB 48k https │ audio only mp4a.40.5 48k 22050Hz low, m4a_dash 249 webm audio only │ 12.64MiB 51k https │ audio only opus 51k 48000Hz low, webm_dash 250 webm audio only │ 16.25MiB 66k https │ audio only opus 66k 48000Hz low, webm_dash 140 m4a audio only │ 31.61MiB 129k https │ audio only mp4a.40.2 129k 44100Hz medium, m4a_dash 251 webm audio only │ 30.82MiB 126k https │ audio only opus 126k 48000Hz medium, webm_dash 17 3gp 176x144 12 │ 13.01MiB 53k https │ mp4v.20.3 53k mp4a.40.2 0k 22050Hz 144p 160 mp4 256x144 24 │ 3.25MiB 13k https │ avc1.4d400c 13k video only 144p, mp4_dash 278 webm 256x144 24 │ 4.25MiB 17k https │ vp9 17k video only 144p, webm_dash 133 mp4 426x240 24 │ 5.94MiB 24k https │ avc1.4d4015 24k video only 240p, mp4_dash 242 webm 426x240 24 │ 6.80MiB 27k https │ vp9 27k video only 240p, webm_dash 134 mp4 640x360 24 │ 9.56MiB 39k https │ avc1.4d401e 39k video only 360p, mp4_dash 18 mp4 640x360 24 │ 48.99MiB 200k https │ avc1.42001E 200k mp4a.40.2 0k 44100Hz 360p 243 webm 640x360 24 │ 24.36MiB 99k https │ vp9 99k video only 360p, webm_dash 135 mp4 854x480 24 │ 13.12MiB 53k https │ avc1.4d401e 53k video only 480p, mp4_dash 244 webm 854x480 24 │ 19.99MiB 81k https │ vp9 81k video only 480p, webm_dash 136 mp4 1280x720 24 │ 17.42MiB 71k https │ avc1.4d401f 71k video only 720p, mp4_dash 22 mp4 1280x720 24 │ ~50.09MiB 200k https │ avc1.64001F 200k mp4a.40.2 0k 44100Hz 720p 247 webm 1280x720 24 │ 38.85MiB 159k https │ vp9 159k video only 720p, webm_dash 137 mp4 1920x1080 24 │ 42.01MiB 172k https │ avc1.640028 172k video only 1080p, mp4_dash 248 webm 1920x1080 24 │ 71.89MiB 294k https │ vp9 294k video only 1080p, webm_dash
ラジオで静止画しか付いていないので,音質が良くて小さいopusの 251
がいいかなと思ったのですが, --embed-thumbnail
オプションでサムネイルを埋め込もうとするとopusのwebpには埋め込めないようだったのでmp4aの 140
にすることにしました.
[ThumbnailsConvertor] Converting thumbnail "/tmp/【公式】その着せ替え人形はラジオをする(第1回) [A3vKWR3WXWk].webp" to png ERROR: Supported filetypes for thumbnail embedding are: mp3, mkv/mka, ogg/opus/flac, m4a/mp4/mov
ということでこういう感じでサムネイル画像埋め込みでダウンロードできました.
$ yt-dlp -f 140 --embed-thumbnail A3vKWR3WXWk
ファイラーでもサムネイルが表示されていい感じです.
1話目がダウンロードできましたが,現在13話まで配信されています.1話づつダウンロードするのは面倒.プレイリストはあるけどラジオ以外のものも配信されています.でもタイトルを見るとラジオかどうかはわかるのでタイトルでフィルターしてラジオだけをダウンロードすることにしました.
フィルタには --match-filter
オプションを使い,title~=フィルタ
という感じで使います.ということでこんな感じでダウンロードしてみると,プレイリストをチェックしてフィルタにマッチするものだけをダウンロードしてくれました.これでオフラインでもいつでも聞けます :)
$ yt-dlp -f 140 --embed-thumbnail --match-filter "title~=ラジオをする" https://www.youtube.com/watch?list=PLUH30mfo5wJwdafMdAJFcrcryUbYiixl4
$ yt-dlp --version 2022.03.08.1 $ dpkg-query -W python3 ffmpeg ffmpeg 7:4.3.3-0+rpt3+deb11u1 python3 3.9.2-3 $ lsb_release -dr Description: Raspbian GNU/Linux 11 (bullseye) Release: 11 $ arch armv7l $ cat /proc/device-tree/model && echo Raspberry Pi 3 Model B Rev 1.2