我正在使用 yt-dlp python 模块来获取媒体的标题
msdos>yt-dlp --get-filename https://www.youtube.com/watch?v=XKuL5xaKZHM
薛之謙 Joker Xue【演員】官方完整版 MV [XKuL5xaKZHM].webm
但是当我从 python subprocess.check_output 调用它时我得到了
cmd = ['yt-dlp', '--get-filename', 'https://www.youtube.com/watch?v=XKuL5xaKZHM']
val = subprocess.check_output(cmd, encoding='utf-8')
print(val)
我有
Joker Xue MV [XKuL5xaKZHM].webm
不知何故它被破坏了。但是,如果我从 vscode 运行和调试,我会得到正确的输出。任何想法 ?我在 Windows 11 上使用 winpython 3.9
这似乎是
yt-dlp
的限制,它删除了它认为“不应”成为文件名一部分的字符。要读取真实数据,请使用 -J
选项下拉 JSON 并解析生成的 JSON:
import json
import subprocess
cmd = ['yt-dlp', '-J', 'https://www.youtube.com/watch?v=XKuL5xaKZHM']
val = subprocess.check_output(cmd)
val_obj = json.loads(val)
print(val_obj['title'], val_obj['id'], val_obj['ext'])
# 薛之謙 Joker Xue【演員】官方完整版 MV XKuL5xaKZHM webm
根据需要从
val_obj
中提取其他信息。