バッチファイルを使用してn回ダウンロードし、youtube-dlを終了します。

バッチファイルを使用してn回ダウンロードし、youtube-dlを終了します。

シングルプレイリストの場合は、n回ダウンロードした後に--playlist-end NUMBER終了できることがわかりますyoutube-dl

しかし、私の問題はバッチファイルを使用していることです。

batch-file.txtのように見える

https://www.youtube.com/playlist?list=PLUiueC0kTFqLvpFk_Zg55geh_TBTKnbnA
https://www.youtube.com/playlist?list=PL11ZiN8vMsDpdgDscEZZrCfR5vQT_EzvG
https://www.youtube.com/playlist?list=PLgCYzUzKIBE_ZuZzgts135GuLQNX5eEPk

テストの実行は次のとおりです。

$ youtube-dl -i -c --no-warnings --console-title --batch-file='batch-file.txt' -s -o '%(playlist_title)s/%(title)s.%(ext)s'
[youtube:tab] PLUiueC0kTFqLvpFk_Zg55geh_TBTKnbnA: Downloading webpage
[download] Downloading playlist: Testing Flutter Apps
[youtube:tab] playlist Testing Flutter Apps: Downloading 6 videos
[download] Downloading video 1 of 6
[youtube] eLMa2jgp_bw: Downloading webpage
[youtube] eLMa2jgp_bw: Downloading MPD manifest
[download] Downloading video 2 of 6
[youtube] nuMqDNUb7f0: Downloading webpage
[youtube] nuMqDNUb7f0: Downloading MPD manifest
[download] Downloading video 3 of 6
[youtube] Vfi0uyDWIuM: Downloading webpage
[youtube] Vfi0uyDWIuM: Downloading MPD manifest
[download] Downloading video 4 of 6
[youtube] 225MFHjQokw: Downloading webpage
[youtube] 225MFHjQokw: Downloading MPD manifest
[download] Downloading video 5 of 6
[youtube] uB5_REsREtU: Downloading webpage
[youtube] uB5_REsREtU: Downloading MPD manifest
[download] Downloading video 6 of 6
[youtube] YjtGT7Cccd0: Downloading webpage
[youtube] YjtGT7Cccd0: Downloading MPD manifest
[download] Finished downloading playlist: Testing Flutter Apps
[youtube:tab] PL11ZiN8vMsDpdgDscEZZrCfR5vQT_EzvG: Downloading webpage
[download] Downloading playlist: Funny Readings
[youtube:tab] playlist Funny Readings: Downloading 7 videos
[download] Downloading video 1 of 7
[youtube] EShUeudtaFg: Downloading webpage
[download] Downloading video 2 of 7
[youtube] 15nNY7uofNw: Downloading webpage
[download] Downloading video 3 of 7
[youtube] 4nxsCZ2SEcQ: Downloading webpage
[download] Downloading video 4 of 7
[youtube] lhLHXjZyr8I: Downloading webpage
[download] Downloading video 5 of 7
[youtube] NmnGt4LBxcQ: Downloading webpage
ERROR: Private video
Sign in if you've been granted access to this video
[download] Downloading video 6 of 7
[youtube] feXHNClEZdI: Downloading webpage
[download] Downloading video 7 of 7
[youtube] GH5M4trXnTU: Downloading webpage
[youtube] GH5M4trXnTU: Downloading player b2e56c01
[download] Finished downloading playlist: Funny Readings
[youtube:tab] PLgCYzUzKIBE_ZuZzgts135GuLQNX5eEPk: Downloading webpage
[download] Downloading playlist: UI Testing for Beginners
[youtube:tab] playlist UI Testing for Beginners: Downloading 20 videos
[download] Downloading video 1 of 20
[youtube] j8jQq-kYgDU: Downloading webpage
[youtube] j8jQq-kYgDU: Downloading MPD manifest
[download] Downloading video 2 of 20
[youtube] NTBj_0tIlQc: Downloading webpage
[youtube] NTBj_0tIlQc: Downloading MPD manifest
[download] Downloading video 3 of 20
[youtube] zJuFYqnBcgQ: Downloading webpage
[youtube] zJuFYqnBcgQ: Downloading MPD manifest
[download] Downloading video 4 of 20
[youtube] GDTJHaR5yIs: Downloading webpage
[youtube] GDTJHaR5yIs: Downloading MPD manifest
[download] Downloading video 5 of 20
[youtube] ZpFgY6qc_ZY: Downloading webpage
[youtube] ZpFgY6qc_ZY: Downloading MPD manifest
[download] Downloading video 6 of 20
[youtube] KOC_wC3LAoA: Downloading webpage
[youtube] KOC_wC3LAoA: Downloading MPD manifest
[download] Downloading video 7 of 20
[youtube] VuPU6yG0uwg: Downloading webpage
[youtube] VuPU6yG0uwg: Downloading MPD manifest
[download] Downloading video 8 of 20
[youtube] QmH-B_UYIyA: Downloading webpage
[youtube] QmH-B_UYIyA: Downloading MPD manifest
[download] Downloading video 9 of 20
[youtube] CpQQ6-vo5bw: Downloading webpage
[youtube] CpQQ6-vo5bw: Downloading MPD manifest
[download] Downloading video 10 of 20
[youtube] xxO0Z9GzcBU: Downloading webpage
[youtube] xxO0Z9GzcBU: Downloading MPD manifest
[download] Downloading video 11 of 20
[youtube] HRRn6m5hUoA: Downloading webpage
[youtube] HRRn6m5hUoA: Downloading MPD manifest
[download] Downloading video 12 of 20
[youtube] L037q8MGkGA: Downloading webpage
[youtube] L037q8MGkGA: Downloading MPD manifest
[download] Downloading video 13 of 20
[youtube] IaxMgpKwRFY: Downloading webpage
[youtube] IaxMgpKwRFY: Downloading MPD manifest
[download] Downloading video 14 of 20
[youtube] A88735Xv108: Downloading webpage
[youtube] A88735Xv108: Downloading MPD manifest
[download] Downloading video 15 of 20
[youtube] _96FT7E6PL4: Downloading webpage
[youtube] _96FT7E6PL4: Downloading MPD manifest
^[[B[download] Downloading video 16 of 20
[youtube] BPlHmKjQUWo: Downloading webpage
[youtube] BPlHmKjQUWo: Downloading MPD manifest
[download]

最初のプレイリストには6つのビデオがあり、2番目のプレイリストには7つのビデオがあり、3番目のプレイリストに20のビデオがあります。

合計18のビデオをダウンロードしましたが、ダウンロードを終了したいと思います。

この3つのプレイリストには合計33の動画があることがわかりました。Downloading video標準出力では33回表示されます。

$ youtube-dl -i -c --no-warnings -s --console-title -o '%(playlist_title)s/%(title)s.%(ext)s' --batch-file='batch-file.txt' | grep -o "Downloading video" | wc -l
33

Downloading videoしたがって、19回目の発生時にダウンロードを終了すると成功します。

確立されたそれ:

特定の出力を提供した後にプロセスを終了するには、次のものを使用できます。

mylongrunningtool | stdbuf -o0 egrep '(term1|term2)' >&-

しかし、このコードには問題があります。標準出力を表示しません。

私の考えでは、私は何かをしなければならないと思います。次のような:

var=0
my_program | while read line ; do 
    if echo "$line" | grep "Downloading video" 
    then
        ((i=i+1))
    fi
    if var=20 exit my_program
done 

または次のような役に立つかもしれません:

my_program | awk 'BEGIN{s=0} /error message/{s=1} 1; END{exit(s)}'

しかし、どうすればいいのかわかりません。どうですか?

答え1

あなたの質問に対するコメントによると、youtube-dlダウンロードの総数を制限する特定のオプションがあります。

--max-downloads NUMBER
NUMBER個のファイル以降ダウンロードが中止されました。

質問のコマンドとバッチファイルの使用:

youtube-dl -i -c --max-downloads=18 --no-warnings --console-title \
  --batch-file='batch-file.txt' -o '%(playlist_title)s/%(title)s.%(ext)s

最初のプレイリストでは6つのファイル、2番目のプレイリストでは6つのファイル(そのうちの1つは「エラー:プライベートビデオ」のため失敗しました)、3番目のプレイリストから6つのファイルをダウンロードしました。合計18個。

関連情報