J'essaie d'automatiser le téléchargement d'une liste de lecture à l'aide de youtube-dl à l'aide d'un script bash. J'ai eu du succès quand youtube-dl ne génère aucune erreur.
Disons qu'il y a une erreur de contenu trop court, puis j'essaie de boucler pour terminer les fichiers de la liste de lecture après avoir dormi pendant 90 secondes afin de ne pas bombarder le site.
Cependant, ce que je ressens, c’est que, pour une raison quelconque, le sommeil ne fonctionne pas comme prévu et que le site est bombardé de nouvelles requêtes menant à un http 429.
Que puis-je faire pour améliorer mon script ... script partiel affiché ici
until youtube-dl --verbose --ignore-errors url-to-playlist; do
sleep 90;
done
Est-ce que j'utilise la mauvaise boucle? Y a-t-il un meilleur moyen?
Merci pour votre temps
Vous passez une liste de lecture sur youtube-dl, avec l'option de ligne de commande --ignore-errors
. Cela signifie que youtube-dl tentera de télécharger la liste complète des vidéos avant de quitter. quel que soit le nombre d'échecs auxquels il fera face en cours de route. Donc, si la vidéo n ° 2 échouait, la demande pour la vidéo n ° 3 suivrait immédiatement après. Je ne sais pas à quel point Google est vigilant, mais cela pourrait déjà vous sonner le glas.
Et même après que la dernière vidéo de votre liste de lecture a été vue, êtes-vous sûr que youtube-dl renvoie un code de sortie non nul? Il n'y a aucune mention de cela dans le readme , donc je ne serais pas surpris que votre sleep 90
ne soit jamais exécuté.
D'ailleurs, à quoi sert cette boucle de toute façon? Le redémarrage de youtube-dl avec la même liste de lecture permettra de tout télécharger à nouveau; y compris toutes les vidéos qui ont été téléchargées avec succès la première fois. Bien que les options --no-overwrites
et --continue
puissent être utiles ici.
Pour empêcher Google de bloquer votre adresse IP (HTTP 429), il est conseillé d’utiliser l’option --sleep-interval
. Exemple:
youtube-dl --verbose --ignore-errors --sleep-interval 10 url-to-playlist
Je ne sais pas si l'intention de votre boucle était de continuer à retenter une vidéo en échec jusqu'à ce qu'elle réussisse. J'espère que non; ce n'est pas très simple, puisque: