プレイリスト内のビデオのメタデータをダウンロードするときに youtube-dl プロセスがフォークするのを防ぐ

プレイリスト内のビデオのメタデータをダウンロードするときに youtube-dl プロセスがフォークするのを防ぐ

youtube-dlを使用してビデオのメタデータをファイルに保存するには、bashで次のように呼び出すことができます。

youtube-dl -j https://www.youtube.com/watch?v=${video_id} > metadata.json

しかし、動画がプレイリストのコンテキストで参照される場合、つまり

youtube-dl -j https://www.youtube.com/watch?v=${video_id}&list=${list_id}&index=${index} > metadata.json

その後、youtube-dl はシェルからフォークまたはデタッチされ (これは正しく理解していますか?)、出力はファイルではなくターミナルに送信されます。プロセスは何かを待機して停止しているようです。Ctrl + C を使用して終了できます。

youtube-dl がなぜこのようなことを行うのでしょうか。また、これを防ぐことはできますか。再生リストに関連するメタデータとビデオに関連するメタデータを保存したいと考えています。

答え1

シェルオペレータを使用してプロセスを実行すると、プロセスがバックグラウンドで実行されます&

問題のYouTube URLには「&」で区切られたクエリパラメータがあるため、引用シェルが「&」を演算子として解釈するのを防ぐには、URL 全体を二重引用符で囲むか (URL で変数も使用する場合推奨)、少なくとも & の前にバックスラッシュを付けます。

"https://host?a=b&c=d"

https//host?a=b\&c=d

関連情報