Spotify から YTMusic に移行するためのツール
これは、「いいね!」した曲とプレイリストを Spotify から YTMusic にコピーするためのスクリプトのセットです。 CLI ツールと GUI (以前は Spotify_to_ytmusic_gui と呼ばれていた Yoween によって実装されました) の両方を提供します。
このプロジェクトに多大な資金的貢献をしてくれた @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 フォルダ > 「Install Certificates.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 プレイリストの名前を取得し、YTMusic プレイリストが存在しない場合にプレイリストを作成できます。
s2yt_copy_playlist
例えば:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
失敗した場合でも「copy_playlist」または「load_liked」を再実行するのは安全です。プレイリストのエントリが重複することはありません。
これは主にデバッグ用ですが、YTMusic でトラックを検索するコマンドがあります。
s2yt_search --artist
この関数は、まず YTMusic 上で指定されたアーティスト名でアルバムを検索します。
次に、最初の 3 つのアルバム結果を反復処理し、指定されたトラック名とまったく同じ名前のトラックを検索します。一致するものが見つかった場合は、トラック情報を返します。
この関数がアルバム内でトラックを見つけられない場合は、指定されたトラック名とアーティスト名で曲を検索します。
yt_search_algo パラメータに応じて、次のアクションのいずれかを実行します。
yt_search_algo が 0 の場合は、単純に最初の曲の結果を返します。
yt_search_algo が 1 の場合、曲の結果を反復処理し、トラック名、アーティスト名、アルバム名に正確に一致する最初の曲を返します。一致するものが見つからない場合は、ValueError が発生します。
yt_search_algo が 2 の場合、あいまい一致が実行されます。曲タイトルの括弧内のすべてが削除され、トラック名、アーティスト名、アルバム名との一致がチェックされます。一致するものが見つからない場合は、トラック名とアーティスト名でビデオを検索します。それでも一致するものが見つからない場合は、ValueError が発生します。
関数が上記のいずれかの方法を使用してトラックを見つけることができない場合、ValueError が発生します。
いいえ、これは Linux/Windows/MacOS 上で動作します。
「spotify2ytmusic に一致するディストリビューションが見つかりません」というメッセージが表示されます。
これは問題 #39 で報告されており、Python のバージョン間の不一致のようです。 MacOS 上のユーザーは、特定のバージョンの Python をインストールしてから、一致するバージョンの PIP を使用する必要がありました。
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
ルックアップアルゴリズムはどのように機能しますか?
Spotify のトラック情報が与えられると、YTMusic で同じアーティストのアルバムを検索し、最初の 3 件のヒットを調べてまったく同じ名前のトラックを探します。正確なトラックが見つからない場合は、同じアーティストによるトラック名で曲を検索し、最初のヒットを返します。
考え方としては、曲とアーティストを検索して YTMusic のアルゴリズムに頼って判断するよりも、アルバムとアーティストを見つけて正確に一致するトラックを探す方が、特に短いトラックの場合は正確になる可能性が高いということです。 「Survival by Yes」のような矛盾したヒット曲も数多くある。
私のコピーは、「エラー: (再試行中) サーバーが HTTP 400 を返しました: 不正なリクエスト」を繰り返して失敗します。
トラック間で 3 秒間のスリープを行うには、「--track-sleep=3」引数を指定して実行してみてください。これにはかなり時間がかかりますが、高速化が失敗した場合には成功する可能性があります。
クリエイティブ コモンズ ゼロ v1.0 ユニバーサル
Spotify-backup.py は MIT ライセンスに基づいてライセンスされています。詳細については、https://github.com/caseychu/spotify-backup を参照してください。