Me gustaría acceder al resultado del siguiente comando de shell,
youtube-dl -g "www.youtube.com/..."
para imprimir su salida direct url
en un archivo, desde dentro de un programa de Python. Esto es lo que he probado:
import youtube-dl
fromurl="www.youtube.com/..."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)
¿Es eso posible? Traté de entender el mecanismo de la fuente, pero se perdió: youtube_dl/__init__.py
, youtube_dl/youtube_DL.py
, info_extractors
...
python
youtube-dl
JulienFr
fuente
fuente
Respuestas:
No es difícil y está realmente documentado :
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)
fuente
video['url']
cambiar avideo['webpage_url']
with ydl:
?He aquí una forma.
Configuramos la cadena de opciones, en una lista, tal como configuramos los argumentos de la línea de comandos. En este caso
opts=['-g', 'videoID']
. Luego, invocayoutube_dl.main(opts)
. De esta manera, escribimos nuestro módulo .py personalizadoimport youtube_dl
y luego invocamos lamain()
función.fuente
Para un código simple, creo que
import os os.system('youtube-dl [OPTIONS] URL [URL...]')
Arriba solo se ejecuta la línea de comando dentro de Python.
Otro se menciona en la documentación Usando youtube-dl en Python Aquí está la forma
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'])
fuente
Si
youtube-dl
es un programa de terminal, puede utilizar elsubprocess
módulo para acceder a los datos que desee.Consulte este enlace para obtener más detalles: Llamar a un comando externo en Python
fuente
youtube-dl
que es un programa de línea de comandos escrito en Python y no veo nada de malo en llamarlo desde la línea de comandos. Si desea jugar con el código fuente, no dude en hacerlo.me gustaría esto
from subprocess import call command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c" call(command.split(), shell=False)
fuente