spotDL:3 步把 Spotify 歌单离线保存为带封面的本地音乐
【免费下载链接】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
坐飞机、进山区,Spotify 一断网,歌单就跟着"消失"。spotDL 是一个开源命令行工具,它把你在 Spotify 收藏的播放列表、专辑或单曲,从 YouTube 等公开音频源匹配下载为本地 MP3,并自动写好艺术家、专辑、封面和歌词标签,让音乐彻底脱离网络也能播放。
快速判断:先看它适不适合你
适合这些情况:
- 想把常用歌单备份到本地硬盘或便携播放器
- 希望下载下来的文件"开箱即播":有封面、有 ID3 标签、命名规范
- 熟悉命令行,或者愿意用一下浏览器界面
不适合这些情况:
- 追求无损音质。默认下载上限是 128kbps 的 MP3,只有 YouTube Music Premium 账号配合特定格式才能拿到 256kbps
- 想"一键全收"零维护。它依赖外部音频源的匹配质量,偶尔会有个别歌曲找不到
- 需要下载 Spotify 独占、公开网络根本找不到原曲的内容
简单说:它做的是"备份 + 整理",不是"高保真转录"。
它如何运作
一次下载的完整数据流是这样的:
- 解析 Spotify 端:你给的链接或"艺术家 - 歌名"式查询,会被解析成歌曲列表。播放列表、专辑、歌手、单曲都支持,逻辑集中在 downloader.py。
- 跨源模糊匹配:拿曲名、歌手、时长在多个音频源里检索,打分取最像的。音频源插件都放在 providers/audio/ 目录下,默认包括 YouTube、YouTube Music,也内置了 Bandcamp、SoundCloud 等。
- 下载与转码:音频落盘后用 FFmpeg 统一转成 MP3(也可选 M4A、OPUS)。
- 元数据回填:从 providers/lyrics/ 抓歌词,把标题、歌手、专辑、发行年份、封面图全部写进文件标签,文件名也按模板生成。
所有行为参数(输出目录、音频源顺序、比特率等)存在一份 JSON 配置里,读取和默认值管理在 utils/config.py。命令行临时参数优先级高于配置文件,方便你按次调整。
动手实践
安装:环境要求与两条命令
前置依赖:Python 3.10–3.14,以及 FFmpeg。装 spotDL 时可以顺手把 FFmpeg 也拉到它的安装目录里:
pip install spotdl spotdl --download-ffmpeg spotdl --version验证版本能正常打印即安装完成。如果个别 YouTube 视频下载失败,可再补一句spotdl --download-deno装上 Deno 运行时。
命令行快速下载
下载操作统一走spotdl download加一个目标:链接、搜索词、歌手主页都行,也可以一次排多个任务:
spotdl download https://open.spotify.com/playlist/37i9dQZF1E8UXBoz02kGID spotdl download 'The Weeknd - Blinding Lights'想批量备份"喜欢的歌曲",用spotdl download saved --user-auth(需要登录授权)。
图形界面上手
不想碰终端,直接起一个本地 Web 服务,浏览器里搜索、选择、下载:
spotdl web然后访问 http://localhost:8800 即可,界面支持搜索预览和任务队列,默认把文件放进当前目录。
进阶玩法
以下参数都可以在命令行临时指定,也可以写进配置文件长期生效(参见 docs/usage.md)。
- 输出目录与命名:
--output "~/Music/Spotify"指定落地目录;命名模板支持{artist}/{album}/{title}这类占位符,下载完就是整齐的目录树。 - 质量与格式:默认 MP3 128kbps。YTM Premium 用户可用 cookie 文件拿 256kbps 源,配合 M4A/OPUS 格式和
--bitrate disable跳过二次转码。 - 同步机制:
spotdl sync配合.spotdl存档文件(逻辑在 console/sync.py),重跑时会下载歌单新增的曲目、删掉已移除的曲目,是保持本地库与 Spotify 收藏一致的最省事方式。 - 元数据定制:封面、歌词、发行信息默认自动嵌入;
meta子命令可以只补元数据不重新下载,适合修复旧文件。
踩坑记录
1. 现象:spotdl: command not found原因:Python 安装时没把可执行目录加进 PATH。 解法:重装并勾选 Add to PATH,或临时改用python -m spotdl。
2. 现象:报YT-DLP download error,且集中在少数歌曲原因:部分 YouTube 视频需要 Deno 运行时,缺失时会失败。 解法:运行spotdl --download-deno。
3. 现象:YouTube Music 源大面积失败,提示可能被封原因:地区限制触发了平台风控。 解法:换网络环境,或在配置里把其他音频源调到前面。
4. 现象:匹配到的不是想要的版本,或元数据是错的原因:模糊匹配选错了源,或原曲名信息不完整。 解法:用"YouTube链接|Spotify链接"的组合格式,手动指定音频来源,让元数据强制取自 Spotify 那一侧。
边界与合规
spotDL 下载的是公开网络上的音频,供个人备份和离线收听是常见用法,但请注意:只备份你有权收听的歌曲,不要二次分发或商用,尽量通过正规渠道支持喜爱的音乐人。工具不审查内容,使用责任在你自己。
一句话总结
spotDL 把"Spotify 歌单 + 公开音频源 + FFmpeg + 标签管理"串成了一条命令,适合想要一份带封面、带标签、可离线播放的本地音乐库的人。源码在这里,克隆下来可以自行阅读或二次开发:
git clone https://gitcode.com/GitHub_Trending/sp/spotify-downloader【免费下载链接】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),仅供参考