116 votes

Comment utiliser youtube-dl à partir d'un programme python ?

Je voudrais accéder au résultat de la commande shell suivante,

youtube-dl -g "www.youtube.com/..."

pour imprimer sa sortie direct url dans un fichier, à partir d'un programme python. Voici ce que j'ai essayé :

import youtube-dl
fromurl="www.youtube.com/..."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)

Est-ce possible ? J'ai essayé de comprendre le mécanisme dans la source mais je me suis perdu : youtube_dl/__init__.py , youtube_dl/youtube_DL.py , info_extractors ...

202voto

jaimeMF Points 316

Ce n'est pas difficile et réellement 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)

11voto

Pour un code simple, peut-être, je pense

import os
os.system('youtube-dl [OPTIONS] URL [URL...]')

Ci-dessus, il s'agit simplement d'exécuter une ligne de commande dans python.

Autre est mentionné dans la documentation Utilisation de youtube-dl sur python Voici le chemin

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'])

4voto

cogitoergosum Points 43

Voici un moyen.

Nous configurons la chaîne des options, dans une liste, tout comme nous configurons les arguments de la ligne de commande. Dans ce cas opts=['-g', 'videoID'] . Ensuite, invoquez youtube_dl.main(opts) . De cette façon, nous écrivons notre module .py personnalisé, import youtube_dl et ensuite invoquer la main() fonction.

1voto

DARKSOUL Points 31
from __future__ import unicode_literals 
import youtube_dl

ydl_opts = {} 
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
    ydl.download(['Your youtube url'])

Vous pouvez utiliser "format", "continue", "outtmpl" dans ydl_opts. Par exemple ;

ydl_opts= {
           'format: '22',
           'continue': True;
           'outtmpl': '%(uploader)s - %(title)s.%(ext)s'
           'progress_hooks': [my_hook],
          }

def my_hook(d):
    if d['status'] == 'downloading':
        print('Downloading video!')
    if d['status'] == 'finished':
        print('Downloaded!')

Lorsque vous avez besoin d'arrêter le téléchargement de la liste de lecture, il suffit d'ajouter ce code dans ydl_opts.

'noplaylist': True;

-3voto

Utilisation : python3 AudioFromYtVideo.py link outputName

import os
from sys import argv

try:
    if argv[1] and argv[2]:
        pass
except:
    print("Input: python3 [programName] [url] [outputName]")    

os.system('youtube-dl -x --audio-format mp3 -o '+argv[2]+' '+argv[1])

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X