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

Jul*_*nFr 63 python youtube-dl

我想访问shell命令的结果:

youtube-dl -g "www.youtube.com..."
Run Code Online (Sandbox Code Playgroud)

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

import youtube-dl
fromurl="www.youtube.com ...."
geturl=youtube-dl.magiclyextracturlfromurl(fromurl)
Run Code Online (Sandbox Code Playgroud)

那可能吗 ?我试图了解源的机制,但迷路了:youtube_dl/__init__.py,youtube_dl/youtube_DL.py,info_extractors...

小智 105

这并不困难并且实际记录在案:

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)
Run Code Online (Sandbox Code Playgroud)

  • 你必须安装youtube_dl:如果你有pip实用程序(要安装它,sudo apt-get install python -pip)你可以sudo pip install youtube-dl (8认同)
  • 我知道这是旧的,还有其他答案,但只是为了澄清.在新版本的youtube_dl上有一些变化而不是`video ['url']`它改为`video ['webpage_url']` (6认同)
  • `with ydl:` 的目的是什么? (4认同)
  • 我收到此错误:import youtube_dl ImportError:没有名为youtube_dl的模块 (3认同)

小智 6

对于简单的代码,我可能认为

import os
os.system('youtube-dl [OPTIONS] URL [URL...]')
Run Code Online (Sandbox Code Playgroud)

以上只是在python中运行命令行。

文档中提到了其他在 python 上使用 youtube-dl 这里是方法

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'])
Run Code Online (Sandbox Code Playgroud)