在Python中嵌入youtube-dl:anconv编码的后处理器密钥名称?

时间:2017-10-07 15:11:19

标签: python youtube-dl

我正在编写一个python程序,通过mp3格式的搜索查询从youtube下载音乐。

import youtube_dl
import urllib.request
import urllib.parse
import re

ydlOpts = {
    'format': 'best',
    'extractaudio': True,
    'audioformat': 'best',
    'noplaylist': True,
    'outtmpl': '/path/to/folder/%(title)s.%(ext)s',
    'postprocessors': [{
        'preferredconc': 'mp3',
        'preferredquality': 192
    }]
}

def query(search):
    queryString = urllib.parse.urlencode({'search_query': search})
    htmlContent = urllib.request.urlopen("http://www.youtube.com/results?" + queryString)
    searchResults = re.findall(r'href=\"\/watch\?v=(.{11})', htmlContent.read().decode())
    url = "http://www.youtube.com/watch?v=" + searchResults[0]
    print (url)
    return url

searchList = ['Alone Together Paul Desmond', 'Agua De Beber Astrud Gilberto', 'Molasses Hiatus Kaiyote']

youtubeList = []

for i in searchList:
    youtubeList.append(query(i))

youtube_dl.YoutubeDL(ydlOpts).download([youtubeList[0]])`

但是,当尝试运行此代码时,使用avconv进行后处理时,只使用第一个搜索查询来测试代码,我在youtube-dl选项中的'后处理器'下的'key'值会出现错误。我最初从后处理器中省略了它,因为youtube-dl应该自动使用avconv进行处理,而youtube-dl文档中的所有音频提取示例都改为使用ffmpegExtractAudio:'key': 'ffmpegExtractAudio'

但是,省略该键会抛出此错误:

  

追踪(最近一次通话):     文件“downloadmusic.py”,第36行,in       youtube_dl.YoutubeDL(ydlOpts)。下载([youtubeList [0]])     在 init 中输入文件“/Users/Yo/anaconda3/lib/python3.6/site-packages/youtube_dl/YoutubeDL.py”,第417行       pp_class = get_postprocessor(pp_def_raw ['key'])   KeyError:'key'

我找不到任何关于avconv而不是ffmpeg处理的键值的文档,并且将ydlOpts中'audioformat'的值更改为'mp3'仍会导致下载.webm文件,因此需要后处理。

使用youtube-dl作为命令行工具,这种方式有效: youtube-dl -x --audio-format mp3 --audio-quality 0 -o '/path/to/folder/%(title)s.%(ext)s' URL

avconv后处理的关键值应该是什么?为什么不将'audioformat'改为'mp3'呢?

谢谢!

0 个答案:

没有答案