シングルプレイリストの場合は、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個。