web-dev-qa-db-fra.com

Faire attendre youtube-dl jusqu'à ce qu'un flux en direct commence

En utilisant youtube-dl, vous pouvez facilement télécharger un en cours Streaming en direct.

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

Si le flux en direct cible n'a pas encore été démarré, la commande quitte tout de suite après l'impression de messages comme

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

Est-il possible de faire youtube-dl Attendez que le flux en direct commence, puis enregistrez-le?

Ma solution de contournement actuelle est la suivante:

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

ou ca:

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

La combinaison des deux fonctionne parfaitement maintenant (la seconde devrait être suffisante, mais j'utilise également le premier comme une relèvement), mais ce serait bien s'il y avait une manière plus élégante.

3
ynn

Peut-être que cela va faire

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

ou une autre alternative

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

Mais il n'y a pas de fonction intégrée si vous cherchiez cela.
[.____] La meilleure approche serait celle que vous avez déjà utilisée en utilisant un script ou la ligne de contournement de la ligne de commande.

0
Tom-Oliver Heidel