web-dev-qa-db-ja.com

ライブストリームが起動するまで待ってください

_youtube-dl_を使用すると、継続ライブストリーミングを簡単にダウンロードできます。

_$ youtube-dl --hls-use-mpegts <URL>
_

ただし、ターゲットライブストリームがまだ起動されていない場合は、メッセージの印刷後にコマンドが終了します。

_[youtube] I1gi2ABCDEf: Downloading webpage
ERROR: This live event will begin in a few moments.
_

ライブストリームが開始されるまで待機してからそれを記録するまで、_youtube-dl_を起動することは可能ですか?

私の現在の回避策はこれです:

_#pseudo code
while (true) {
    start = time()
    execute youtube-dl
    end = time()
    if (end - start > 10seconds) { #if recording succeeded
        break
    }
    sleep(some seconds)
}
_

またはこれに:

_#pseudo code
while (true) {
    if (check_if_live_is_active_using_curl_or_youtube_api()) {
        break
    }
    sleep(some seconds)
}
execute youtube-dl
_

両者を組み合わせることは今や完全に働いています(実際のものは十分であるべきではなく、私はフォールバックとして最初のものも使用します)が、よりエレガントな方法があったらいいでしょう。

3
ynn

多分これはやるでしょう

until youtube-dl --hls-use-mpegts <URL>; do continue; done
 _

または別の代替案

while [[ true ]]; do youtube-dl --hls-use-mpegts && break || continue ; done
 _

しかし、あなたがそれを探していたならば、内蔵の機能はありません。
[。]最善のアプローチは、スクリプトまたはコマンドラインの回避策を使用してすでに行ったものになるでしょう。

0