anaconda ref) https://anaconda.org/conda-forge/youtube-dl
conda install -c conda-forge youtube-dl
ref) https://github.com/ytdl-org/youtube-dl/blob/master/README.md
sudo -H pip install --upgrade youtube-dl
import
import youtube_dl as ydl
La vidéo DL a une méthode ydl.main () et une méthode ydl._real_main (). Comme vous pouvez le voir à partir de la source, le premier est un wrapper pour le second, qui gère en outre les exceptions. Cette dernière méthode est utilisée ici pour les raisons décrites ci-dessous. Vous pouvez spécifier divers arguments ( Reportez-vous au git d'origine ), mais le spécificateur d'option et son Notez que si vous mettez un espace entre la condition réelle, cet espace sera également inclus dans la condition réelle.
myURL = "https://www.nicovideo.jp/watch/so23335421" #URL de la vidéo que vous souhaitez enregistrer
myOUT = "-oout.mp4" #Spécifiez le nom du fichier vidéo de sortie
def main():
try:
ydl._real_main([myURL, myOUT])
except ydl.DownloadError:
main()
main()
Lorsque je télécharge une vidéo Nico Nico de 4 minutes ou plus, j'obtiens une erreur de classe ydl.DownloadError (en fait c'est une erreur d'urlib, et il semble que youtube-dl au moment de l'écriture ne puisse pas éviter cette erreur <a href = https //obel.hatenablog.jp/entry/20191102/1572693444> [Référence] ) En fait, si vous répétez la méthode, vous pouvez continuer DL, et lorsque DL est terminé, aucune erreur ne se produit. Par conséquent, alors que ydl._real_main () continue de lancer ydl.DownloadError, il est possible d'éviter de voir l'erreur en gardant ydl._real_main () exécuté de manière récursive.
Étant donné que le module youtube_dl fait un usage intensif de sys.exit, vous devrez peut-être changer la source si vous voulez travailler correctement avec jupyter notebook ou en combinaison avec d'autres programmes? <A href = https: //hira98.hatenablog .com / entry / 2019/07/02/210000> Si vous l'appelez avec un bloc try, cela peut être possible .
Recommended Posts