Utilisez youtube_dl comme module python. annexe) Erreur Nico Nico Video HTTP 403

Installation

anaconda ref) https://anaconda.org/conda-forge/youtube-dl

conda install -c conda-forge youtube-dl

pip (non vérifié)

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

Vidéo DL

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.

Remarques

É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

Utilisez youtube_dl comme module python. annexe) Erreur Nico Nico Video HTTP 403
Utilisez Blender comme module Python
Utilisez pymol comme bibliothèque python
Erreur lors de l'installation d'un module avec Python pip
Utilisez le module de papier électronique comme liste de tâches
Utilisez une page d'erreur personnalisée avec python / tornado
Créer un module Python
[Python] Utiliser les données au format JSON comme objet de type dictionnaire
[Python] Utiliser une séquence de chaînes
Utiliser le cache HTTP en Python
Utiliser Remotte en tant qu'utilisateur
Utilisez le tissu tel quel en python (fabric3)
Résolution d'erreur Python assez bâclée
Utilisez Python intégrable comme interface Python 3 de Vim
Lancer le script Python en service
Si vous voulez un singleton en python, considérez le module comme un singleton
J'obtiens une erreur Python No module nommée'encodings 'avec la commande aws