简介

spotify-downloader(以下都简称为 spotDL)是一款命令行工具,可以通过提交的 Spotify 链接,在 YouTube Music 匹配对应的歌曲并下载,然后再将 Spotify 提供的歌曲元信息赋予下载的文件。通过这种方法下载的文件专辑封面清晰准确,歌曲名、艺术家、专辑、年份、风格等信息完整,甚至大多情况下都会带有歌词。如果和我一样对自己的离线音乐库音质没有过分要求,但又想满足在音乐软件中不想看到空白专辑封面或者「未知艺术家」等强迫症不适的情况,这个工具可以说是完美满足需求。

准备工作

值得注意的是 spotDL 是一款命令行工具,即所有的操作都需要在终端内完成。但其实使用起来也非常简单,即使完全没有基础按照步骤完成应该也不困难。

条件

使用 spotDL 需要满足以下几个条件:

  1. 拥有 Spotify 账号(需要复制 Spotify 的分享链接);
  2. 网络条件可以使用 YouTube Music(国内朋友需要使用支持 YTM 地区的原生 IP,最简单的方法就是直接打开 music.youtube.com 查看是否能够正常访问即可,能看到首页就说明没问题,如果看到的是 Coming Soon,则说明该地区或者该网络环境不支持;
  3. 安装好了依赖并添加到 PATH。

安装依赖

spotDL 具体需要两个依赖的程序:Python 3.6.1(或以上)和 FFmpeg 4.2(或以上),两者都添加到了 PATH。官方仓库的 README 中已经给了详细的介绍,这里以 Windows 平台为例简单介绍一下。

Python

安装 Python 的过程和安装所有应用一样,首先前往 Python 官方网站的 下载页面,点击下载即可。

唯一需要注意的是,在初次打开安装界面的时候,最下方会有一个 Add Python X.X to PATH 的复选框,默认应该是没有勾选的,这里需要勾选上,再根据提示进行安装。

由于电脑已经安装过了,这里网上随便找了个图,可以看到图中是没有勾选的,我们要勾选上。

要勾选最下方的 Add to PATH 选项
要勾选最下方的 Add to PATH 选项

然后就是单击 Install Now 根据提示一步步完成安装即可。

如果以前已经安装过 Python,只需要确保 Python(而不是 launcher)添加到 PATH 中即可。如果选择自定义安装,记得也要勾选安装 pip。

FFmpeg

FFmpeg 的安装在 macOS 和 Linux 下都十分简单,至于 Windows 的安装方法,在官方的 README 中也给了一个详细的参考链接,这里简要转述一下 Windows 的安装过程。

首先需要打开 FFmpeg 的 官方下载页面,然后将鼠标悬停在网页中的 Windows 图标上,点击下方出现的下载链接,跳转到新的页面,然后选择下载对应的版本即可。

这里我选择了 full 版本,下载后得到一个压缩包,将解压后得到的文件夹保存好,并记录文件夹的路径。(可以放在平常安装应用的目录下,不能删除。)

然后打开 Windows Search,搜索环境变量,打开「编辑系统环境变量」;

在出现的窗口中点击环境变量,弹出的新窗口中选择 Path ,点击编辑,再次出现新的窗口中选择新建,然后在编辑框内输入放置刚才解压的文件夹中 bin 文件夹的目录。

例如我刚才将压缩包解压并重命名为 ffmpeg 并放置在了 D:\Applictions 目录下,那么我需要填写的就是 D:\Applications\ffmpeg\bin

另一种简单的方法就是直接打开刚刚解压的文件夹,选中 bin 这个文件夹,按住键盘上的 Shift 键,右键单击,在弹出菜单中选择 复制文件地址 ,然后再粘贴到新建 Path 的输入框中。(注意删掉包裹的引号)

完成后一路点击确定即可。

如果需要了解其他系统的安装方式或更加详细的步骤指引,可以参看 VideoProc 的这篇文章:

检验安装

这样我们就完成了两个依赖安装,打开一个终端,输入

python --version
ffmpeg -version

正常出现版本号,没有报错就说明安装成功了。

安装 spotDL

接下来的步骤就相对简单了,继续在终端中操作,只需要输入一行命令:

pip install spotdl

后续需要升级 spotDL,只需要输入以下任意一行命令即可。

pip install --upgrade spotdl
pip install -U spotdl

使用 spotDL

如前所述,spotDL 的所有使用都发生在终端中,通过不同的指令调用不同的功能(如果不想记住,直接复制粘贴就好了)。

文件保存位置

spotDL 默认的保存歌曲位置是在当前的工作目录下,可以在终端中使用 pwd 命令查看,建议在开始下载前就先 cd 到目标位置,避免一堆杂乱的文件塞满用户文件夹。

如果你不理解上面在说什么也没关系,以 Windows 系统为例,只需要先建立好想要保存这次下载歌曲的文件夹,然后在该文件夹内按住 Shift 并单击右键,然后选择在此处打开 Powershell 或者任何其他终端即可。

例如在上图打开的终端使用 spotDL 下载的文件就会保存在 D:\Download(D)\Music 目录下。

下载歌曲、专辑、艺术家、播放清单

下载 Spotify 的单曲、专辑、艺术家和播放清单是最简单的使用方式,只需先在 Spotify 中复制分享链接:

再在终端中使用 spotdl <url> 即可。例如我想下载这首 QUEEN,命令为:

spotdl https://open.spotify.com/track/5PimlePLQd8xdf7uKccHqS

同理,专辑、艺术家、播放清单的链接也可以依照 spotdl <url> 的格式使用,如果想一次下载多个 URL 的内容,只需要在多个 URL 中加空格。

例如这里我下载两首歌曲:

spotDL 默认使用 4 个线程进行下载,所以比起一首首下载,直接下载专辑、清单,或者多首歌曲一起下载的效率更高。

下载完成后,即可在当前的工作目录看到歌曲,如果歌曲没有问题,生成的缓存文件也可以删除。

通过歌曲名搜索并进行下载

还有一种方法是通过歌曲名进行下载,尽管该方法不被推荐,但懒惰如我,对于一些不太容易重名的歌曲,偶尔使用一下也比较方便。

spotdl '[songQuery]'

还是刚才的例子,下载 my little airport 的 QUEEN,只需要输入

spotdl 'my little airport - queen'

同样也可以下载成功。

指定 YouTube 视频和 Spotify 元信息下载

为了应对识别失败的情况,如果 spotDL 没有正确识别歌曲(很少出现就是了),而我们又能够在 YouTube 上发现对应的歌曲,我们可以手动让 spotDL 下载 YouTube 上这首歌、转换成音频格式,并且写入 Spotify 上这首歌的元信息。使用方法是:

spotdl "<YouTube url>|<Spotify url>"

通过这种方法,歌曲的声音是来自指定的 YouTube 视频或音乐的,元信息来自指定的 Spotify 曲目。

还有许多其他的使用方法,包括指定下载线程、指定音频格式、恢复中断下载等,在项目的 README 中也有了详细的介绍。这里不再赘述。

总结

因为一些众所周知的原因,有时候我们喜欢的歌手在国内一夜之间没法听了,所以我才有定期保存常听歌曲的离线文件的习惯。国内的音乐平台有审查和版权不全的问题,国外的音乐平台也往往因为地区不同,曲库可能不会收录一些国内常听的音乐。综合使用下来,使用 spotDL 下载音乐的方式很适合我,但还是想要强调音乐文件的音质确实也就够我这种木耳听个响。相信下载音乐文件的方法肯定也有很多,只是这是我目前发现的音乐文件信息最全、熟练之后也最方便的一种。

最近还搭建了一个 OneDrive 的目录,上传了 my little airport 的所有歌曲,这里也分享一下:my-little-airport。现在在大陆 mla 基本上是消失了,可以下载后用本地文件上传到网易云音乐云盘,也是一种临时解决办法。但有条件还是还是请大家在 Spotify、YT Music 或外区 Apple Music 等平台听正版,也是对我们喜欢的歌手的一种支持。