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

如何从python程序中使用youtube dl?,python,youtube-dl,Python,Youtube Dl,我想访问以下shell命令的结果 youtube-dl -g "www.youtube.com/..." 从python程序中将其输出直接url打印到文件中。这就是我尝试过的: import youtube-dl fromurl="www.youtube.com/..." geturl=youtube-dl.magiclyextracturlfromurl(fromurl) 可能吗? 我试图理解源代码中的机制,但却迷失了方向:youtube\u dl/

我想访问以下shell命令的结果

youtube-dl -g "www.youtube.com/..."
从python程序中将其输出
直接url
打印到文件中。这就是我尝试过的:

import youtube-dl
fromurl="www.youtube.com/..."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)
可能吗?
我试图理解源代码中的机制,但却迷失了方向:
youtube\u dl/\uu init\u\u.py
youtube\u dl/youtube\u dl.py
info\u提取器

如果
youtube dl
是一个终端程序,那么您可以使用
子流程
模块访问所需的数据

查看此链接了解更多详细信息:

这并不难,而且:

这里有一个方法

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

我希望这样

from subprocess import call

command = "youtube-dl https://www.youtube.com/watch?v=NG3WygJmiVs -c"
call(command.split(), shell=False)
对于简单的代码, 我想可能是吧

import os
os.system('youtube-dl [OPTIONS] URL [URL...]')
上面的代码只是在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'])

在这里写得不错:@lollercoaster,那个URL已经死了。从Python程序调用Python程序有一点悲哀,不是吗?我认为 YouTube DL/COD>是用Python编写的命令行程序,从命令行调用它没有错误。如果您想乱搞源代码,请随意这么做。@Xaranke如果您将youtube dl作为一个模块从python中导入,您将拥有更多的控制权。从命令行解析打印的数据远不如从命令行解析打印的数据那么可靠。另外,我敢说您实际上尝试在这个youtube dl命令上使用subprocess/os.system。在尝试传递参数时,它实际上工作得不太好,也不符合预期。我遇到了以下错误:导入youtube\u dl ImportError:没有名为youtube的模块\u dl您必须安装youtube\u dl:如果您有pip实用程序(要安装它,sudo apt get install python pip),您可以安装sudo pip,如果您有gentoo上没有名为youtube_dl的模块,您可以尝试添加“#”/usr/bin/env python2.7“到python文件的开头。我知道这是旧的,还有其他答案,只是为了澄清。在youtube\u dl的新版本上有一些变化,而不是
video['url']
它改为
video['webpage\u url']
使用ydl:的
的目的是什么?
这种方法有效,主函数不会返回任何内容,因此您还无法真正获得它的值。
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'])