Me gustaría acceder al resultado del siguiente comando de shell,
youtube-dl -g "www.youtube.com/..."
para imprimir su salida direct urlen 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_dly 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-dles un programa de terminal, puede utilizar elsubprocessmó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-dlque 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