2014-10-21 18 views
5

Gibt es Dokumentation für die Verwendung von youtube-dl als Python-Bibliothek in einem Projekt?youtube-dl Python-Bibliothek Dokumentation

Ich weiß, dass ich die Hauptklasse verwenden kann, aber ich kann keine Dokumentation oder beispielsweise nicht finden ...

import youtube_dl 

ydl = youtube_dl.YoutubeDL(params) 

... ? 

Antwort

4

Wenn Sie eine Version von github herunterladen können Sie Sphinx-docs erzeugen, die nützlich ist für die Entwicklung. Dann in der Regel mit Pythons Hilfe-Funktion gibt eine Vorstellung, was der Zweck einer Funktion

ist
>>> import youtube_dl as yt 
>>> help(yt) 

Des Weiteren ich ipython ein nützliches Werkzeug finden Code erkunden die %edit Magie.

%edit yt.main 

würde Sie direkt zur Quelle der Hauptfunktion bringen.

2

ähnliche Frage: How to use youtube-dl from a python program

Aktivieren Sie diese Datei in Quellen: https://github.com/rg3/youtube-dl/blob/master/youtube_dl/__init__.py

Sie benötigen Optionen dict (ursprünglich erzeugt mit Hilfe von Parametern von der Kommandozeile erhalten):

ydl_opts = { 
    'usenetrc': opts.usenetrc, 
    'username': opts.username, 
    'password': opts.password, 
    # ... all options list available in sources 
    'exec_cmd': opts.exec_cmd, 
} 

und dann YoutubeDL Instanz erstellen und rufen Sie einige Methoden mit selbstbeschriebenen Namen auf:

with YoutubeDL(ydl_opts) as ydl: 
    ydl.print_debug_header() 
    ydl.add_default_info_extractors() 

    # PostProcessors 
    # Add the metadata pp first, the other pps will copy it 
    if opts.addmetadata: 
     ydl.add_post_processor(FFmpegMetadataPP()) 
    if opts.extractaudio: 
     ydl.add_post_processor(FFmpegExtractAudioPP(preferredcodec=opts.audioformat, preferredquality=opts.audioquality, nopostoverwrites=opts.nopostoverwrites)) 
    if opts.recodevideo: 
     ydl.add_post_processor(FFmpegVideoConvertor(preferedformat=opts.recodevideo)) 
    if opts.embedsubtitles: 
     ydl.add_post_processor(FFmpegEmbedSubtitlePP(subtitlesformat=opts.subtitlesformat)) 
    if opts.xattrs: 
     ydl.add_post_processor(XAttrMetadataPP()) 
    if opts.embedthumbnail: 
     if not opts.addmetadata: 
      ydl.add_post_processor(FFmpegAudioFixPP()) 
     ydl.add_post_processor(AtomicParsleyPP()) 


    # Please keep ExecAfterDownload towards the bottom as it allows the user to modify the final file in any way. 
    # So if the user is able to remove the file before your postprocessor runs it might cause a few problems. 
    if opts.exec_cmd: 
     ydl.add_post_processor(ExecAfterDownloadPP(
      verboseOutput=opts.verbose, exec_cmd=opts.exec_cmd)) 

    # Update version 
    if opts.update_self: 
     update_self(ydl.to_screen, opts.verbose) 

    # Remove cache dir 
    if opts.rm_cachedir: 
     ydl.cache.remove() 

    # Maybe do nothing 
    if (len(all_urls) < 1) and (opts.load_info_filename is None): 
     if not (opts.update_self or opts.rm_cachedir): 
      parser.error(u'you must provide at least one URL') 
     else: 
      sys.exit() 

    try: 
     if opts.load_info_filename is not None: 
      retcode = ydl.download_with_info_file(opts.load_info_filename) 
     else: 
      retcode = ydl.download(all_urls) 
    except MaxDownloadsReached: 
     ydl.to_screen(u'--max-download limit reached, aborting.') 
     retcode = 101 
+1

Bitte kopieren Sie nicht alle '__init __. Py'; das meiste davon ist sehr wenig nützlich. Folgen Sie stattdessen bitte der offiziellen Dokumentation [wie in meiner Antwort] (http://stackoverflow.com/a/27495114/35070). – phihag

3

Die official documentation now contains a section über das Einbetten youtube-dl. Du bist auf dem richtigen Weg;

import youtube_dl 

with youtube_dl.YoutubeDL({}) as ydl: 
    ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc']) 

ist ein gutes minimales Programm.