You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pytube下载音频时为何生成同名Media重复文件夹?

问题原因与解决方案

核心原因

  1. 路径指向错误且误解Apple Music文件夹结构
    你指定的路径/Users/martinreid/Music/Music/Media/Automatically Add to Music存在两个关键问题:
  • Media是Apple Music的包(Bundle),并非普通文件夹。macOS下这类包会显示为文件夹形式,但直接写入包内路径时,系统无法正确识别内部结构,会自动在同级目录创建同名的普通Media文件夹,导致重复生成。
  • 真正用于自动导入音乐的文件夹是Automatically Add to Music.localized,它直接位于/Users/martinreid/Music/Music/目录下,而非Media内部。写入这个文件夹的文件会被Apple Music自动扫描并导入,而写入Media包内既不会触发自动导入,还会引发文件夹重复问题。
  1. filename_prefix参数可能引发拼接异常
    虽然路径拼写无误,但pytube的filename_prefix拼接逻辑在部分场景下可能和路径结合产生意外行为,不如直接合并前缀与文件名更稳妥。

解决方案

1. 修正目标路径

将music_folder改为正确的自动导入文件夹路径:

music_folder = "/Users/martinreid/Music/Music/Automatically Add to Music.localized"

你可以手动验证路径:打开Finder,按住Option键点击菜单栏的「前往」→「音乐」,进入Music文件夹即可看到Automatically Add to Music.localized。

2. 合并文件名前缀与文件名

取消filename_prefix参数,直接在filename中拼接前缀,避免潜在的拼接问题:

dl_loc = audio.download(
    output_path=music_folder,
    filename=f"{track_num}{song}",
    skip_existing=True
)

3. 验证文件夹权限

确保当前用户对目标文件夹有读写权限:

  • 右键目标文件夹→「显示简介」
  • 在「共享与权限」面板中,确认当前用户权限为「读写」

完整修正后的代码

import pytube

link = "https://www.youtube.com/watch?v=ya8N9FhMq5s" 
song = "Angel (Massive Attack Cover).mp4"
track_num = "01 "
music_folder = "/Users/martinreid/Music/Music/Automatically Add to Music.localized"

yt = pytube.YouTube(link)
audio = yt.streams.get_audio_only()
dl_loc = audio.download(
    output_path=music_folder,
    filename=f"{track_num}{song}",
    skip_existing=True
)

print("Download complete. File at: ", dl_loc)

内容的提问来源于stack exchange,提问作者Martin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 11:21:01