微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

os.path.isfile 方法究竟对这段代码中的功能做了什么,为什么它的行为如此奇怪?

如何解决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 举报,一经查实,本站将立刻删除。