簡介#
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 等平台聽正版,也是對我們喜歡的歌手的一種支持。