J'aimerais accéder au résultat de la commande Shell:
youtube-dl -g "www.youtube.com..."
imprimer sa sortie direct url
à déposer; depuis un programme python:
import youtube-dl
fromurl="www.youtube.com ...."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)
Est-ce possible ? J'ai essayé de comprendre le mécanisme dans le source mais je me suis perdu: youtube_dl/__init__.py
, youtube_dl/youtube_DL.py
, info_extractors
...
Ce n'est pas difficile et en fait documenté :
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)
Voici un moyen.
Nous définissons la chaîne des options dans une liste, tout comme nous définissons les arguments de la ligne de commande. Dans ce cas, opts=['-g', 'videoID']
. Ensuite, appelez youtube_dl.main(opts)
. De cette façon, nous écrivons notre module personnalisé .py, import youtube_dl
, Puis appelons la fonction main()
.
Je voudrais ceci
from subprocess import call
command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c"
call(command.split(), Shell=False)
Si youtube-dl
est un programme terminal, vous pouvez utiliser le module subprocess
pour accéder aux données souhaitées.
Consultez ce lien pour plus de détails: Appel d'une commande externe en Python