如何用 spotDL 的 --create-skip-file 和 --respect-skip-file 跳过已下载歌曲?
【免费下载链接】spotify-downloaderDownload your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).项目地址: https://gitcode.com/GitHub_Trending/sp/spotify-downloader
spotDL(spotify-downloader 项目)用命令行下载 Spotify 的歌曲、专辑和歌单。重新下载同一份歌单时,已经下载过的歌曲会被再次查找和处理;如果你只想让 spotDL 补下新歌、跳过已有的歌,可以用--create-skip-file和--respect-skip-file两个参数:前者在每首歌曲下载成功后生成一个.skip标记文件,后者让 spotDL 在下载前检查该标记,存在则直接跳过这首歌。本文按"首次下载打标记 → 再次运行验证跳过 → 配置文件中固定开启"的路径演示完整操作。
前提:安装 spotDL 并确认下载目录
按 安装指南,CLI 方式运行前需要准备:
- Python 3.10 - 3.14(加入 PATH;非 Windows 平台把命令中的
pip换成pip3) - FFmpeg 4.2 或更高版本(加入 PATH)
- Windows 需先安装 Visual C++ 2019 redistributable
- 强烈建议安装 Deno:spotDL 用 yt-dlp 从 YouTube 下载,部分视频(包括 "made for kids" 标记的视频)没有 Deno 会下载失败
pip install spotdl另外要注意下载位置:spotDL 把文件下载到你运行命令时所在的目录,所以先cd到目标文件夹再执行下载(见 docs/installation.md 的 "Where does spotDL download songs?" 一节)。后面的.skip标记文件也生成在这个目录里。
两个参数各管什么
docs/usage.md 的 CLI options 一节对这两个参数的说明是:
| 参数 | 文档中的说明 |
|---|---|
--create-skip-file | Create skip file for successfully downloaded file |
--respect-skip-file | If a file with the extension .skip exists, skip download |
标记文件是一个与音频文件同路径、扩展名改为.skip的空文件。默认output模板为{artists} - {title}.{output-ext},例如音频文件The Weeknd - Blinding Lights.mp3(示例结果,实际文件名以你的--output模板为准),对应的标记就是The Weeknd - Blinding Lights.mp3.skip,创建逻辑见 downloader.py。
首次下载:生成 .skip 标记
用文档中的示例歌单链接,首次下载时把两个参数一起带上:
spotdl download https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID --create-skip-file --respect-skip-file单曲下载同理('The Weeknd - Blinding Lights'是 docs/usage.md 中的示例查询):
spotdl download 'The Weeknd - Blinding Lights' --create-skip-file --respect-skip-file验证:下载结束后进入下载目录,每首成功下载的音频旁都应出现一个.skip文件:
The Weeknd - Blinding Lights.mp3 The Weeknd - Blinding Lights.mp3.skip如果某首歌只有音频没有.skip文件,说明该歌曲这次没有走标记创建路径(原因见文末"行为边界与限制")。
再次运行:验证跳过
对同一歌单再跑一次,带上--respect-skip-file即可(两个参数一起带也没有问题):
spotdl download https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID --respect-skip-file已有.skip标记的歌曲不会再下载,运行日志(默认log_level为INFO)中会输出Skipping ... (skip file found),例如:
Skipping The Weeknd - Blinding Lights (skip file found)(日志文案见 downloader.py。)没有标记的新歌曲会被正常下载;此时再带上--create-skip-file可以为这些新歌补上标记。因此日常重复运行同一歌单时,固定两个参数都带是最简单的用法。
可选:在配置文件中固定开启
如果不想每次手敲参数,可以改配置文件。默认配置中这两项都是false,改成:
{ "create_skip_file": true, "respect_skip_file": true }- 配置文件位置:Windows 为
C:\Users\user\.spotdl\config.json,Linux 为~/.config/spotdl/config.json(v4.4.3 之前创建的旧目录~/.spotdl/config.json在新目录不存在时仍会被使用) - 配置文件已存在时会自动加载;
spotdl --generate-config可以生成一份完整配置,但会覆盖现有配置文件 - 两项对应的默认值定义见 config.py,完整默认配置见 docs/usage.md 的 "Default config" 一节
行为边界与限制
.skip判定优先于--overwrite:源码中.skip检查位于overwrite == "skip"/force的文件存在判定之前,命中时直接返回(downloader.py)。所以启用--respect-skip-file时,标记文件优先于--overwrite的取值生效。- 删掉音频文件不会触发补下载:如果音频文件被手动删除但
.skip标记还在,spotDL 仍按"已跳过"处理,不会再下载该歌曲(见 downloader.py 中跳过分支返回None的逻辑)。想重新下载时,先删除对应的.skip文件。 - 无需转码时不创建标记:创建
.skip的代码位于 ffmpeg 转码完成之后;当文件不需要转码而被直接移动(如--bitrate auto或--bitrate disable且文件扩展名与目标格式一致)时,不会生成.skip文件(见 downloader.py)。默认bitrate为128k会走转码,标记正常生成。 - 两个参数的命令行定义见 arguments.py。
【免费下载链接】spotify-downloaderDownload your Spotify playlists and songs along with album art and metadata (from YouTube if a match is found).项目地址: https://gitcode.com/GitHub_Trending/sp/spotify-downloader
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考