gpt4 book ai didi

python - 下载 youtube mp3 - 元数据编码问题(python、youtube-dl、ffmpeg)

转载 作者:行者123 更新时间:2023-12-04 23:09:13 26 4
gpt4 key购买 nike

我正在尝试使用 youtube-dl.exe 和 ffmpeg.exe(Windows 7)从 youtube 下载音频,但我在编码时遇到了一些问题。我必须手动解析元数据,因为当我尝试使用

--metadata-from-title "%(artist) - %(title)" --extract-audio --audio-format mp3 https://www.youtube.com/watch?v=DaU94Ld3fuM
我收到错误:无法将视频标题解释为“%(艺术家) - %(标题)”
无论如何,我编写了一些代码来使用 ffmpeg 保存元数据:
def download(url, title_first=False):
if (0 == subprocess.call('youtube-dl --extract-audio --audio-format mp3 %s' % url)):
#saves file in current directory in format: VID_TITLE-VID_ID.mp3
video_id = url[url.find('=')+1:] #video id from URL (after ?v=)
for f in os.listdir('.'):
if video_id in f:
filename = f
break
os.rename(filename, video_id+'.mp3') #name without non-ascii chars (for tests)
video_title = filename[: filename.find(video_id)-1]

output = video_title + '.mp3'
title, artist = '', ''
try: #parsing the title
x = video_title.find('-')
artist = video_title[:x].strip()
title = video_title[x+1:].strip()
if (title_first): output = '%s - %s.mp3' % (title, artist)
except:
pass

x = 'ffmpeg -i "%s" -metadata title="%s" -metadata artist="%s" -acodec copy -id3v2_version 3 -write_id3v1 1 "%s"' \
% (video_id+'.mp3', title, artist, output)
print x
subprocess.call(x)
该文件被下载,然后被裁剪到给定的开始和持续时间(上面的代码是一个简化版本)。文件名很好,但是当我用 AIMP3 打开文件时,它显示垃圾而不是非 ascii 字符:
enter image description here
我尝试使用 iso-8859-2、utf-8 和 mbcs 重新编码最终命令:
x = x.decode('cp1250').encode('iso-8859-2')
但是非 ascii 字符仍然不可读。传递 unicode 命令返回 UnicodeEncodeError...
知道如何解决这个问题吗?

最佳答案

您缺少 s在每个模板字段之后。应该是 --metadata-from-title "%(artist)s - %(title)s" .您还应该通过 --add-metadata将元数据写入文件。所以最终的命令将如下所示:
youtube-dl --metadata-from-title "%(artist)s - %(title)s" --extract-audio --audio-format mp3 --add-metadata https://www.youtube.com/watch?v=DaU94Ld3fuM

关于python - 下载 youtube mp3 - 元数据编码问题(python、youtube-dl、ffmpeg),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30376172/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com