2013-08-05 2 views
39

Я хотел бы получить доступ к результату команды оболочки:Как использовать YouTube-DL из программы питона

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

печатать свой вывод direct url в файл; из программы python:

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

Возможно ли это? я пытался понять механизм в источнике, но заблудился: youtube_dl/__init__.py, youtube_dl/youtube_DL.py, info_extractors ...

+0

http://stackoverflow.com/questions/89228/calling-an-external-command-in-python –

+0

Достойных записи здесь: HTTP: // willdrevo .com/downloading-youtube-and-soundcloud-audio-with-python-and-pandas/ – lollercoaster

ответ

59

Это не сложно и actually documented:

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) 
+3

Я получаю эту ошибку: import youtube_dl ImportError: Нет модуля с именем youtube_dl – Ufoguy

+5

Вы должны установить youtube_dl: если у вас есть утилита pip (для ее установки, sudo apt-get install python-pip), вы можете sudo pip install youtube-dl – JulienFr

+1

Нет, что легко ... – JulienFr

1

Если youtube-dl является терминальной программой, вы можете использовать subprocess модуль для доступа к данным вы хотите.

Проверить эту ссылку для получения более подробной информации: Calling an external command in Python

+19

Это немного грустно вызывать программу python из программы python, не так ли? – JulienFr

+5

Я рассматриваю 'youtube-dl' как программу с командной строкой, написанную на Python, и не вижу ничего плохого в вызове из командной строки. Если вы хотите обмануть исходный код, не стесняйтесь делать это. –

+2

@ Xaranke У вас есть намного больше контроля, если вы импортируете youtube-dl в качестве модуля из python. Анализ печатных данных из командной строки нигде не является надежным. – Wally

4

Вот путь.

Строка параметров настройки в списке, так же, как мы устанавливаем аргументы командной строки. В этом случае opts=['-g', 'videoID']. Затем вызовите youtube_dl.main(opts). Таким образом, мы пишем наш собственный .py модуль, import youtube_dl, а затем вызываем функцию main().

2

Я хотел бы этот

from subprocess import call 

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c" 
call(command.split(), shell=False) 
Смежные вопросы