Verwenden Sie youtube_dl als Python-Modul. Anhang) Nico Nico Video HTTP 403 Fehler

Installation

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

conda install -c conda-forge youtube-dl

pip (nicht verifiziert)

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

Video DL

Das Video-DL verfügt über eine ydl.main () -Methode und eine ydl._real_main () -Methode. Wie Sie der Quelle entnehmen können, ist der erstere ein Wrapper für den letzteren, der zusätzlich Ausnahmen behandelt. Das letztere Verfahren wird hier aus den nachstehend beschriebenen Gründen verwendet. Sie können verschiedene Argumente angeben ( Siehe Original-Git ), aber den Optionsbezeichner und dessen Beachten Sie, dass, wenn Sie ein Leerzeichen zwischen den tatsächlichen Zustand setzen, dieses Leerzeichen auch in den tatsächlichen Zustand einbezogen wird.

myURL = "https://www.nicovideo.jp/watch/so23335421" #URL des Videos, das Sie speichern möchten
myOUT = "-oout.mp4" #Geben Sie den Namen der Ausgabevideodatei an

def main():
    try:
        ydl._real_main([myURL, myOUT])
    except ydl.DownloadError:
        main()

main()

Wenn ich ein Nico Nico-Video von 4 Minuten oder mehr herunterlade, wird ein Fehler der Klasse ydl.DownloadError angezeigt (tatsächlich handelt es sich um einen Fehler von urlib, und es scheint, dass youtube-dl zum Zeitpunkt des Schreibens diesen Fehler nicht vermeiden kann <a href = https //obel.hatenablog.jp/entry/20191102/1572693444> [Referenz] ) Wenn Sie die Methode wiederholen, können Sie DL fortsetzen. Wenn DL abgeschlossen ist, tritt kein Fehler auf. Während ydl._real_main () weiterhin ydl.DownloadError auslöst, ist es daher möglich, den Fehler zu vermeiden, indem ydl._real_main () rekursiv ausgeführt wird.

Bemerkungen

Da das youtube_dl-Modul sys.exit stark nutzt, müssen Sie möglicherweise die Quelle ändern, wenn Sie ordnungsgemäß mit jupyter notebook oder in Kombination mit anderen Programmen arbeiten möchten? <A href = https: //hira98.hatenablog .com / entry / 2019/07/02/210000> Wenn Sie es mit einem try-Block aufrufen, ist dies möglicherweise möglich .

Recommended Posts

Verwenden Sie youtube_dl als Python-Modul. Anhang) Nico Nico Video HTTP 403 Fehler
Verwenden Sie Blender als Python-Modul
Verwenden Sie Pymol als Python-Bibliothek
Fehler beim Installieren eines Moduls mit Python pip
Verwenden Sie das elektronische Papiermodul als Aufgabenliste
Verwenden Sie eine benutzerdefinierte Fehlerseite mit Python / Tornado
Erstellen Sie ein Python-Modul
[Python] Verwenden Sie Daten im JSON-Format als Objekt vom Typ Wörterbuch
[Python] Verwenden Sie eine Zeichenfolgenfolge
Verwenden Sie den HTTP-Cache in Python
Verwenden Sie Remotte als Benutzer
Verwenden Sie Stoff wie in Python (Stoff3)
Ziemlich schlampige Python-Fehlerbehebung
Verwenden Sie einbettbares Python als Python 3-Oberfläche von Vim
Starten Sie das Python-Skript im Dienst
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Ich erhalte einen Python No-Modul mit dem Namen 'Encodings' mit dem Befehl aws