約50の曲のタイトルを含むテキストファイルがあります。
テキストファイルから各タイトルを取得し、YouTubeで検索して最初の4つのビデオリンクをインポートし、そのリンクのオーディオをダウンロードできるCLIユーティリティを探しています。
これまで試してみた結果、youtube-dl
検索機能がありますが、メタデータのみを返し、そこに動画リンクが見つからないようです。
答え1
- WAVは最新のオーディオコンテナ形式ではありません。一定の速度とブロックサイズのオーディオコーデックのみをサポートするコンテナフォーマットを望む理由は不明です。ただし、これはストリーミングサービスでは非常に不便な作業であるため、オーディオをダウンロードしてコーデックにトランスコードし、WAVコンテナに入れる必要があります。幸いにも
yt-dlp -x --audio-format wav
それはあなたのためにそれをします。 (yt-dlp
はい、ポイントですyoutube-dl
。まだ確認していません。)再び、WAVが必要な場合は、WAVフレンドリーなコーデックにトランスコードするのではなく、オーディオに対して行ったすべての操作を修正してください。これは通常ギガバイトの非圧縮オーディオを意味します。 yt-dlp ytsearchN:Search string
「検索文字列」の上位N個の結果を取得します(youtube-dl
現在はそのような機能がないため必要ですyt-dlp
)。- これらすべてをまとめると、
ytdlp -x --audio-format wav ytsearch:YOURTERMSHERE
YOURTERMSHEREクエリごとに必要な操作を実行できます。 - ファイル全体を1行ずつ読みたい場合は、stdinにパイプして次のように
yt-dlp
します--batch-file -
。
sound.shを取得します。
#!/usr/bin/env zsh
sed 's/^/ytsearch4:/' < $1 | yt-dlp --batch-file - -x --audio-format wav
(テストされていません)
chmod 755 grabsound.sh
プログラムを直接実行してから実行できます/path/to/grabsound.sh yourtextfile.txt
。
もう一度強くお勧めしますいいえWAVを使用してください。後で別の形式にトランスコードする予定であっても、wav(主に圧縮されていないPCM)でトランスコードするよりも、元のオーディオをすぐにデコードする方が良いので、ここで行うことは不要です。