從 Spotify 遷移到 YTMusic 的工具
這是一組用於將「喜歡」的歌曲和播放清單從 Spotify 複製到 YTMusic 的腳本。它提供 CLI 工具和 GUI(由 Yoween 實現,以前稱為 spotify_to_ytmusic_gui)。
感謝 @RadicalArti 和 Meet Vora 對此計畫的慷慨資助。
您將需要 Python 3.10 及更高版本的最新版本才能工作,3.8-3.10 可能也可以工作。
從以下位置下載適用於 Windows 的 Python:https://www.python.org/downloads/windows/
也可以使用choco來安裝: choco install python
跑步:
brew install python
brew install python-tk
透過執行以下操作安裝證書:
Macintosh HD > 應用程式 > Python 資料夾 > 雙擊「安裝憑證.command」檔案。
您可能已經安裝了它。請參閱您選擇的套件管理器來安裝它。
該軟體包可在 pip 上找到,因此您可以使用以下命令安裝它:
pip install spotify2ytmusic
或者:
python3 -m pip install spotify2ytmusic
(不建議)
另一種選擇是克隆此存儲庫並直接從來源運行,而不是 pip。但是,您需要安裝「ytmusicapi」軟體包,因此您可能至少需要使用 pip 來安裝它。
直接從原始碼運行:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
然後,您可以在要執行的命令前面新增python3 -m spotify2ytmusic
,例如:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
如果您是透過 PIP 安裝的,您應該能夠運行: s2yt_gui
否則,如果從來源運行:
在 Windows 上: python -m spotify2ytmusic gui
或在 Linux 上: python3 -m spotify2ytmusic gui
login
按鈕或者
在控制台中執行ytmusicapi oauth
。
或者
運行s2yt_ytoauth
或者
運行python -m spotify2ytmusic ytoauth
這將為您提供一個 URL,存取該 URL 並授權該應用程式。完成匯入後,您可以刪除此應用程式的授權。
這將寫入一個檔案“oauth.json”。在應用程式獲得授權時,請保密此文件。該文件包含登入會話令牌。
ytmusicapi 是該軟體的依賴項,應作為「pip install」的一部分進行安裝。
Backup
按鈕,等待完成並切換到下一個選項卡。或執行以下所有步驟
下載 Spotify 備份。
執行spotify-backup.py
,它將幫助您授權存取您的 Spotify 帳戶。
運行: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
這會將您的播放清單和喜歡的歌曲儲存到檔案「playlists.json」中。
如下所述,原始程式以“錯誤”的順序添加歌曲。這是我不喜歡的功能,因此我創建了一個腳本來反轉它們。看起來很可靠,但如果您發現任何奇怪的地方,請提出問題。無論如何,它都會創建原始文件的備份,以防萬一。
範例: python3 .reverse_playlist.py ./playlists.json -r
import
按鈕,等待完成並切換到下一個選項卡。它將瀏覽您在 Spotify 喜歡的歌曲,以及在 YTMusic 上喜歡的歌曲。它將顯示來自 Spotify 的歌曲,然後顯示它在 YTMusic 上找到的牠喜歡的歌曲。我抽查了我的歌曲,它似乎在將 YTMusic 歌曲與 Spotify 匹配方面做得很好。到目前為止,我還沒有在幾百首歌曲中看到任何失敗,但更深奧的歌曲可能有問題。
list
按鈕,等待完成並切換到下一個標籤。這將列出您在 Spotify 和 YTMusic 上擁有的播放列表,以便您可以單獨複製它們。
您可以複製所有播放列表,也可以對各個播放清單進行更精確的複製。複製所有播放清單將使用 Spotify 播放清單的名稱作為 YTMusic 上的目標播放清單名稱。
copy
按鈕,然後等待其完成並切換到下一個選項卡。注意:這不會複製喜歡的播放清單(請參閱上文來執行此操作)。
在清單輸出中,找到 Spotify 播放清單和 YTMusic 播放清單的「播放清單 ID」(第一列)。
copy
按鈕。複製播放清單將採用 YTMusic 播放清單的名稱,如果播放清單不存在,則會建立該播放清單(如果您使用「+」啟動 YTMusic 播放清單):
如果失敗,重新執行「copy_playlist」或「load_liked」應該是安全的,它不會重複播放清單上的條目。
ytmusicapi oauth
或s2yt_ytoauth
或python -m spotify2ytmusic ytoauth
這將為您提供一個 URL,存取該 URL 並授權該應用程式。完成匯入後,您可以刪除此應用程式的授權。
這將寫入一個檔案“oauth.json”。在應用程式獲得授權時,請保密此文件。該文件包含登入會話令牌。
ytmusicapi 是該軟體的依賴項,應作為「pip install」的一部分進行安裝。
下載 Spotify 備份。
執行spotify-backup.py
,它將幫助您授權存取您的 Spotify 帳戶。
運行: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
這會將您的播放清單和喜歡的歌曲儲存到檔案「playlists.json」中。
運行: s2yt_load_liked
它將瀏覽您在 Spotify 喜歡的歌曲,以及在 YTMusic 上喜歡的歌曲。它將顯示來自 Spotify 的歌曲,然後顯示它在 YTMusic 上找到的牠喜歡的歌曲。我抽查了我的歌曲,它似乎在將 YTMusic 歌曲與 Spotify 匹配方面做得很好。到目前為止,我還沒有在幾千首歌曲中看到任何失敗,但更多深奧的歌曲可能有問題。
運行: s2yt_load_liked_albums
Spotify 將喜歡的專輯儲存在「喜歡的歌曲」播放清單之外。這是將您喜歡的專輯加載到 YTMusic 喜歡的歌曲中的命令。
運行s2yt_list_playlists
這將列出您在 Spotify 和 YTMusic 上擁有的播放清單。您需要單獨複製它們。
您可以複製所有播放列表,也可以對各個播放清單進行更精確的複製。複製所有播放清單將使用 Spotify 播放清單的名稱作為 YTMusic 上的目標播放清單名稱。若要複製所有播放列表,請執行:
s2yt_copy_all_playlists
注意:這不會複製喜歡的播放清單(請參閱上文來執行此操作)。
在上面的清單輸出中,找到 Spotify 播放清單和 YTMusic 播放清單的「播放清單 id」(第一列),然後執行:
s2yt_copy_playlist
如果您需要建立播放列表,可以運行:
s2yt_create_playlist "
或者,複製播放清單可以採用 YTMusic 播放清單的名稱,如果您使用「+」啟動 YTMusic 播放列表,則會建立該播放清單(如果該播放清單不存在):
s2yt_copy_playlist
例如:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
如果失敗,重新執行「copy_playlist」或「load_liked」應該是安全的,它不會重複播放清單上的條目。
這主要是為了調試,但有一個命令可以在 YTMusic 中搜尋曲目:
s2yt_search --artist
該函數首先在 YTMusic 上按給定藝術家姓名搜尋專輯。
然後,它會迭代前三個專輯結果,並嘗試尋找與給定曲目名稱完全相同的曲目。如果找到匹配項,則傳回曲目資訊。
如果該函數在專輯中找不到該曲目,則會按給定的曲目名稱和藝術家姓名搜尋歌曲。
根據 yt_search_algo 參數,它執行以下操作之一:
如果 yt_search_algo 為 0,則僅傳回第一首歌曲結果。
如果 yt_search_algo 為 1,它將迭代歌曲結果並傳回與曲目名稱、藝人名稱和專輯名稱完全匹配的第一首歌曲。如果找不到匹配項,則會引發 ValueError。
如果 yt_search_algo 為 2,則執行模糊匹配。它會刪除歌曲標題中括號中的所有內容,並檢查是否與曲目名稱、藝術家名稱和專輯名稱相符。如果找不到匹配項,則會搜尋包含曲目名稱和藝術家姓名的影片。如果仍然找不到匹配項,則會引發 ValueError。
如果函數無法使用上述任何方法找到曲目,則會引發 ValueError。
不,它可以在 Linux/Windows/MacOS 上運行。
我收到「找不到Spotify2ytmusic 的匹配發行版」。
這已在 Issue #39 中報告過,並且似乎 python 版本之間不匹配。那裡的使用者在 MacOS 上需要安裝特定版本的 Python,然後使用符合版本的 PIP:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
查找演算法如何運作?
給定 Spotify 曲目訊息,它會在 YTMusic 上找到同一藝術家的專輯,然後查看前 3 個熱門歌曲,查找名稱完全相同的曲目。如果找不到確切的曲目,它會在歌曲中搜尋同一藝術家的曲目名稱,然後簡單地返回第一首歌曲。
這個想法是,找到專輯和藝術家,然後尋找確切的曲目匹配,比搜尋歌曲和藝術家並依靠 YTMusic 演算法來解決問題更可能準確,特別是對於可能有的短曲目。 by Yes」。
我的副本失敗並出現重複的「錯誤:(重試)伺服器返回 HTTP 400:錯誤請求」。
嘗試使用“--track-sleep=3”參數運行,在軌道之間進行 3 秒的睡眠。這將需要更長的時間,但在更快的速度失敗的地方可能會成功。
知識共享零 v1.0 通用
Spotify-backup.py 根據 MIT 許可證獲得許可。有關更多信息,請參閱 https://github.com/caseychu/spotify-backup。