Ich möchte auf das Ergebnis des folgenden Shell-Befehls zugreifen:
youtube-dl -g "www.youtube.com/..."
um die Ausgabe direct url
aus einem Python-Programm in eine Datei zu drucken . Folgendes habe ich versucht:
import youtube-dl
fromurl="www.youtube.com/..."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)
Ist das möglich? Ich habe versucht , den Mechanismus in der Quelle zu verstehen , aber verloren ging: youtube_dl/__init__.py
, youtube_dl/youtube_DL.py
, info_extractors
...
python
youtube-dl
JulienFr
quelle
quelle
Antworten:
Es ist nicht schwierig und tatsächlich dokumentiert :
import youtube_dl ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s.%(ext)s'}) with ydl: result = ydl.extract_info( 'http://www.youtube.com/watch?v=BaW_jenozKc', download=False # We just want to extract the info ) if 'entries' in result: # Can be a playlist or a list of videos video = result['entries'][0] else: # Just a video video = result print(video) video_url = video['url'] print(video_url)
quelle
video['url']
es zuvideo['webpage_url']
with ydl:
?Hier ist ein Weg.
Wir richten die Zeichenfolge der Optionen in einer Liste genauso ein wie die Befehlszeilenargumente. In diesem Fall
opts=['-g', 'videoID']
. Rufen Sie dann aufyoutube_dl.main(opts)
. Auf diese Weise schreiben wir unser benutzerdefiniertes .py-Modulimport youtube_dl
und rufen dann diemain()
Funktion auf.quelle
Für einfachen Code kann ich denken
import os os.system('youtube-dl [OPTIONS] URL [URL...]')
Oben wird nur die Befehlszeile in Python ausgeführt.
Andere werden in der Dokumentation Verwenden von youtube-dl auf Python erwähnt. Hier ist der Weg
from __future__ import unicode_literals import youtube_dl ydl_opts = {} with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download(['https://www.youtube.com/watch?v=BaW_jenozKc'])
quelle
Wenn
youtube-dl
es sich um ein Terminalprogramm handelt, können Sie mit demsubprocess
Modul auf die gewünschten Daten zugreifen.Weitere Informationen finden Sie unter diesem Link: Aufrufen eines externen Befehls in Python
quelle
youtube-dl
es für ein in Python geschriebenes Befehlszeilenprogramm und sehe nichts Falsches daran, es über die Befehlszeile aufzurufen. Wenn Sie mit dem Quellcode herumspielen möchten, können Sie dies gerne tun.das würde mir gefallen
from subprocess import call command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c" call(command.split(), shell=False)
quelle