如何用 spotDL 的 --create-skip-file 和 --respect-skip-file 跳过已下载歌曲?
2026/9/13 17:33:47 网站建设 项目流程

如何用 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-fileCreate skip file for successfully downloaded file
--respect-skip-fileIf 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_levelINFO)中会输出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)。默认bitrate128k会走转码,标记正常生成。
  • 两个参数的命令行定义见 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询