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.
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.