(2022-01-14 初稿 - )
Debianでyoutube-dlを便利に使わせてもらっている。ここでは、筆者が使ってみて便利だと思う機能とファイル名エラーへの対策を記述する。
いきなり音楽ファイルへ
これまで動画をダウンロードして、以下の記述のとおりmp3等の音楽ファイルへと変換していた。
しかし、動画ファイル全体のダウンロードはサイズが大きいばかりか、ときどきエラーが起きる。
youtube-dlには、動画の音楽ファイルを抽出するオプションがあり、このオプションを用いるとダウンロード後、いきなり音楽ファイルを抽出してくれる。
Post-processing Options: -x, --extract-audio Convert video files to audio-only files (requires ffmpeg/avconv and ffprobe/avprobe) --audio-format FORMAT Specify audio format: "best", "aac", "flac", "mp3", "m4a", "opus", "vorbis", or "wav"; "best" by default; No effect without -x
上記のヘルプメッセージから、筆者はいつも以下のオプションを付けている。
-x --audio-format mp3
実際にオプションを付けると明らかにダウンロードサイズが小さくなり、おまけに抽出までしてくれるので、動画の音楽だけに興味がある方はオプションを付けた方が良いようだ。
複数動画のダウンロード
複数動画をダウンロードするときは、いちいちコマンドラインにURLを書いてyoutue-dlを実行するのが面倒。でも、youtube-dlには以下のオプションがあり、ダウンロードしたいURLを一覧にしたファイルを作っておけば、リスト順にダウンロードしてくれる。
Filesystem Options: -a, --batch-file FILE File containing URLs to download ('-' for stdin), one URL per line. Lines starting with '#', ';' or ']' are considered as comments and ignored.
ダウンロードしたいURLを記述した以下のようなファイルを作り。
cat Downloads-urls.txt https://www.youtube.com/watch?v=xxxxxxxxxxx https://www.youtube.com/watch?v=xxxxxxxxxxx https://www.youtube.com/watch?v=xxxxxxxxxxx
以下のように実行すると、リスト順にダウンロードしてくれる。
youtube-dl -a Downloads-urls.txt
他にも出力するファイル名を制御する等便利すぎて泣きたくなるようなオプションがたくさんあるから、man youtube-dl または youtube-dl --help で確認を。
ファイル名エラー対策
実際にYoutubeからダウンロードすると、動画のタイトルがファイル名に使えない文字があったり、タイトルが長すぎて、エラーが起きてしまうときがある。
具体的には、以下の赤字下線のような例。
hoge@fuga:~$ youtube-dl https://www.youtube.com/watch?v=Spicm6nUl88 [youtube] Spicm6nUl88: Downloading webpage [download] Destination: 【〇〇 】〇〇年人気の洋楽ランキング【最新】〇〇〇〇ファイル名として使えない文字などのメドレー 2021 🇯🇵 バイクで聞くと最高かも 3-xxxxxxxxxxxxxxxxxx.f248.webm [download] 100.0% of 571.83MiB at 74.70KiB/s ETA 00:00ERROR: unable to rename file: [Errno 2] No such file or directory: 'https://hymd3a.hatenablog.com/entry/2021/06/01/191937【〇〇】〇〇年人気の洋楽ランキング【最新】〇〇〇〇ファイル名として使えない文字などのメドレー 2021 🇯🇵 バイクで聞くと最高かも 3-xxxxxxxxxxxxxxxxxx.f248.webm'
hoge@fuga:~ $ youtube -dl https://www.youtube.com/watch?v=QXwgpoDR-YM [youtube] QXwgpoDR-YM: Downloading webpage ERROR: unable to open for writing: [Errno 36] File name too long: 'じゅげむじゅげむごこうの〇〇〇〇〇〇長い長いタイトルだよ 勉強用BGM・作業用・オフィス・店舗用・サロン・商業利用最適 洋楽 2022-xxxxxxxxxxx.webm.part'
こんなときは、きっと対処法があるはずだと、man youtube-dlを調べると…
(前略) Filesystem Options: (中略) --id Use only video ID in file name (後略)
なるほど、--id オプションで、ファイル名がidになるんだ。
youtube-dl https://www.youtube.com/watch?v=xxxxxxxxxxxxxx --id
ということで、問題解決。
Bashのスクリプトに
いろいろ便利なオプションがあり、また、エラー対策まで取れそうなyoutube-dlだけど、筆者の頭ではオプションが覚えきれそうにないので、以下のBashスクリプトを作った。
#/bin/bash # Written by H.Y 2022-01-13 # ver0.02 2022-01-14 # Youtubeファイルをmp3に変換する Usage=" yt2mp3 youtube url yt2mp3 -a Download-urls.txt" CMD="/usr/bin/youtube-dl" OPTIONS="-x --audio-format mp3" if [ $# -lt 1 ]; then echo "$Usage" exit fi # error が起きた場合は --id オプションを付ける $CMD $* $OPTIONS || $CMD $* --id $OPTIONS
皆さんの参考になれば…
関連ページ