再生リストのコンテンツ(600以上のエントリである必要があります)のみをURLから取得しようとすると、次のようになります。
youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
マニュアルページによると、ファイルのダウンロードを防止しながら、プレイリストのエントリをリストする必要があります。
代わりに、この出力を生成した後にハングします。
~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
[1] 4531
~ $ [debug] System config: []
[debug] User config: []
[debug] Custom config: []
[debug] Command-line args: ['-i', '-v', '--flat-playlist', '--skip-download', 'https://www.youtube.com/watch?v=CNotezuR73g']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2018.07.10
[debug] Python version 3.6.6 (CPython) - Linux-4.17.6-1-Arch-x86_64-with-Arch
[debug] exe versions: ffmpeg 4.0.1, ffprobe 4.0.1, rtmpdump 2.4
[debug] Proxy map: {}
[youtube] CNotezuR73g: Downloading webpage
[youtube] CNotezuR73g: Downloading video info webpage
[debug] Default format spec: bestvideo+bestaudio/best
どうすればよいですか?
彼のコメントで提案されているページwysiwigを読みましたか? (@ wysiwigに感謝!)
とにかく、ここであなたが何ができるかを説明しようと思います(前のWebサイトから抜粋)
次のコマンドを使用してみてください:
youtube-dl -j --flat-playlist "https://<yourYoutubePlaylist>" | jq -r '.id' | sed 's_^_https://youtu.be/_' > result.log
これにより、result.logに次のような出力が生成されます。
https://youtu.be/0gvUCLL-UGE
https://youtu.be/CPV7zcUy4J0
https://youtu.be/4wyZNwIrH9I
...
これはあなたが必要とするものでなければなりません(YTビデオへの個別のリンクのリスト))。
コマンドの説明-j
オプションを指定すると、youtube-dlは、渡されたリンクに関するすべての情報を含むJSON出力(この場合)。
次に、このJSON出力はjq
JSONプロセッサに渡されます(事前にインストールする必要があります JQ Webサイトを参照 )。JSON出力に含まれるすべての「id」キーを検索します(0gvUCLL-UGE 、CPV7zcUy4J0、4wyZNwIrH9I、...)。次に、これらの「ID」をsed
に渡します。これにより、それぞれの前にhttps://youtu.be/
が付けられ、前に示した結果が得られます。
注1:JQをインストールするには、単純にSudo apt-get install jq
を使用します。
注2:この方法は Youtube でのみ機能します。
@wysiwig
のメソッドはLinuxで出力を生成しますが、私が求めたものは生成しません。
$ youtube-dl --flat-playlist --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
出力:
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ウェブページをダウンロード
[ダウンロード]プレイリストのダウンロード:フルアートハウス映画
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#1
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#2
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#3
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#4
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#5
[youtube:playlist] PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr:ダウンロードページ#6
[youtube:playlist]再生リストフルアートハウス映画:636本の動画をダウンロードしています
[ダウンロード] 636ビデオのダウンロード1
[download]ダウンロード動画2 of 636
[ダウンロード]ビデオのダウンロード3 of 636
...
私が本当にプレイリストから取得したかったのは、ダウンロードしたいものだけを選択できるように、ビデオ名です。
$ youtube-dl -i --get-filename --skip-download https://www.youtube.com/playlist?list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
出力:
ウェイターズ(フルの長さの映画、長編映画全体、フル映画)_無料でフル映画を観る-CNotezuR73g.mp4
マルコムX(MORGAN FREEMAN、フルムービー、エングリッシュ、フルの長さのフィルム)_無料でフルムービーを見る-3C8j1C7HMj8.mp4
アリゾナ・キッド-ロイ・ロジャース主演の西部劇、フルムービー、長編映画、クラシック映画-8McZ6G2Uud8.mp4
Desperado Man aka Sagebrush Trail(Western Movie、Full Length Movie、Feature Film、Classic Movie)-7udmB5M6IIE.mp4
...
URLを引用していないようです。 Always引用URL。任意のオペレーティングシステム。
あなたの例では、問題ははっきりと見えています:
~ $ youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr [1] 4531
[1] 4531
は、ジョブ(ID 1)が開始され、PID 4531で実行されていることを意味します。
このコマンドラインは、ほぼ以下と同等です。
youtube-dl -i -v --flat-playlist --skip-download https://www.youtube.com/watch?v=CNotezuR73g &
list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
末尾のアンパサンドは、行1がバックグラウンドで実行されることを意味します。シェルに接続されたままなので、出力が表示されます。おそらくハングしておらず、終了したばかりです。結局のところ、これはビデオへのリンクにすぎません。
行2はBashの変数割り当てです。 list
という変数がまだ存在しない場合は、それが定義されます。次のように使用できます。
~ $ echo $list
PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr
使用する正しいコマンドラインは次のとおりです。
youtube-dl -i -v --flat-playlist --skip-download "https://www.youtube.com/watch?v=CNotezuR73g&list=PLm9l7EEbJuhyDYNuItj3sG8h3xAZbjIxr"