简介#
spotify-downloader(以下都简称为 spotDL)是一款命令行工具,可以通过提交的 Spotify 链接,在 YouTube Music 匹配对应的歌曲并下载,然后再将 Spotify 提供的歌曲元信息赋予下载的文件。通过这种方法下载的文件专辑封面清晰准确,歌曲名、艺术家、专辑、年份、风格等信息完整,甚至大多情况下都会带有歌词。如果和我一样对自己的离线音乐库音质没有过分要求,但又想满足在音乐软件中不想看到空白专辑封面或者「未知艺术家」等强迫症不适的情况,这个工具可以说是完美满足需求。
准备工作#
值得注意的是 spotDL 是一款命令行工具,即所有的操作都需要在终端内完成。但其实使用起来也非常简单,即使完全没有基础按照步骤完成应该也不困难。
条件#
使用 spotDL 需要满足以下几个条件:
- 拥有 Spotify 账号(需要复制 Spotify 的分享链接);
- 网络条件可以使用 YouTube Music(国内朋友需要使用支持 YTM 地区的原生 IP,最简单的方法就是直接打开 music.youtube.com 查看是否能够正常访问即可,能看到首页就说明没问题,如果看到的是 Coming Soon,则说明该地区或者该网络环境不支持;
- 安装好了依赖并添加到 PATH。
安装依赖#
spotDL 具体需要两个依赖的程序:Python 3.6.1(或以上)和 FFmpeg 4.2(或以上),两者都添加到了 PATH。官方仓库的 README 中已经给了详细的介绍,这里以 Windows 平台为例简单介绍一下。
Python#
安装 Python 的过程和安装所有应用一样,首先前往 Python 官方网站的 下载页面,点击下载即可。
唯一需要注意的是,在初次打开安装界面的时候,最下方会有一个 Add Python X.X 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 等平台听正版,也是对我们喜欢的歌手的一种支持。