如何解决os.path.isfile 方法究竟对这段代码中的功能做了什么,为什么它的行为如此奇怪?
这是用户 Pedro Lobito 一年前在此处提交的代码:https://stackoverflow.com/a/60490761/874188
它应该根据搜索到的关键字下载一个 youtube .mp3 文件。
import youtube_dl # youtube-dl-2020.3.1
import traceback,os,json
from youtube_search import YoutubeSearch # pip install youtube_search
search = 'carlos paiao playback'
ydl_opts = {
'format': 'beataudio/best','postprocessors': [{
'key': 'FFmpegExtractAudio','preferredcodec': 'mp3','preferredquality': '192'
}]
}
yt = YoutubeSearch(search,max_results=1).to_json()
try:
yt_id = str(json.loads(yt)['videos'][0]['id'])
yt_url = 'https://www.youtube.com/watch?v='+yt_id
with youtube_dl.YoutubedL(ydl_opts) as ydl:
ydl.download([yt_url])
info = ydl.extract_info(yt_url)
songname = info.get('title',None) + "-" + yt_id + ".mp3"
if os.path.isfile(songname):
print("Song Downloaded: " + songname)
else:
print("Error: " + songname)
except:
pass
print(traceback.print_exc())
print("no results")
正如您可以测试的那样,对于 search
字符串下提供的示例,它运行良好。但是,假设您为 youtube 视频添加诸如“我们倒下”之类的关键字,os.path.isfile
将被标记为 False
,并且下载将无法进行。它似乎 50/50 有效,有些关键字有效,有些则无效,而且我完全不知道为什么 os.path.isfile
会这样。我试图与原始海报取得联系,但我的代表太低了。原帖:how to use a key words instead of a url with youtube-dl and discord.py?
编辑 1
os.path.isfile
有时看似无缘无故返回 false 的原因是,YouTube 标题有时可能包含文件名中禁止使用的字符。这个问题可以解决吗,或者有什么替代方法可以绕过这个问题?我的操作系统是 Windows 10。
编辑 2 好吧,我完蛋了。 https://superuser.com/questions/1112132/how-to-create-folder-name-or-file-name-with-special-characters-like
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。