如何从python程序中使用youtube-dl

时间:2013-08-05 09:16:37

标签: python youtube-dl

我想访问shell命令的结果:

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

将其输出direct url打印到文件;来自python程序:

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

这可能吗? 我试图理解源中的机制但迷路了:youtube_dl/__init__.pyyoutube_dl/youtube_DL.pyinfo_extractors ......

5 个答案:

答案 0 :(得分:93)

这并不难,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)

答案 1 :(得分:5)

对于简单的代码, 可能是我想的

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

以上只是在python内部运行命令行。

文档Using youtube-dl on python中提到了其他 这是方法

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

答案 2 :(得分:3)

这是一种方式。

我们在列表中设置选项'字符串,就像我们设置命令行参数一样。在这种情况下opts=['-g', 'videoID']。然后,调用youtube_dl.main(opts)。通过这种方式,我们编写自定义.py模块import youtube_dl,然后调用main()函数。

答案 3 :(得分:1)

我想要这个

from subprocess import call

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c"
call(command.split(), shell=False)

答案 4 :(得分:0)

如果youtube-dl是终端程序,您可以使用subprocess模块访问所需的数据。

点击此链接了解更多详情:Calling an external command in Python