Tools für den Wechsel von Spotify zu YTMusic
Hierbei handelt es sich um eine Reihe von Skripten zum Kopieren von „Likes“-Songs und Playlists von Spotify nach YTMusic. Es bietet sowohl CLI-Tools als auch eine GUI (implementiert von Yoween, früher spotify_to_ytmusic_gui genannt).
Vielen Dank an @RadicalArti und Meet Vora für ihre großzügigen finanziellen Beiträge zu diesem Projekt.
Sie benötigen eine relativ aktuelle Version von Python 3.10 und höher, von denen bekannt ist, dass sie funktionieren, 3.8-3.10 könnte funktionieren.
Laden Sie Python für Windows herunter von: https://www.python.org/downloads/windows/
Sie können es auch mit choco installieren: choco install python
Laufen:
brew install python
brew install python-tk
Installieren Sie Zertifikate wie folgt:
Macintosh HD > Anwendungen > Python-Ordner > Doppelklicken Sie auf die Datei „Install Certificates.command“.
Sie haben es wahrscheinlich bereits installiert. Wenden Sie sich zur Installation an den Paketmanager Ihrer Wahl.
Dieses Paket ist auf pip verfügbar, sodass Sie es installieren können mit:
pip install spotify2ytmusic
oder:
python3 -m pip install spotify2ytmusic
(Nicht empfohlen)
Eine andere Möglichkeit anstelle von Pip besteht darin, dieses Repo einfach zu klonen und direkt von der Quelle aus auszuführen. Allerdings muss das Paket „ytmusicapi“ installiert sein, also sollten Sie es wahrscheinlich zumindest mit pip installieren.
So führen Sie es direkt aus der Quelle aus:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
Dann können Sie dem Befehl, den Sie ausführen möchten, python3 -m spotify2ytmusic
voranstellen, zum Beispiel:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
Wenn Sie über PIP installiert haben, sollten Sie Folgendes ausführen können: s2yt_gui
Andernfalls, wenn von der Quelle ausgeführt:
Unter Windows: python -m spotify2ytmusic gui
Oder unter Linux: python3 -m spotify2ytmusic gui
login
.ODER
Führen Sie ytmusicapi oauth
in einer Konsole aus.
ODER
Führen Sie s2yt_ytoauth
aus
ODER
Führen Sie python -m spotify2ytmusic ytoauth
aus
Dadurch erhalten Sie eine URL, besuchen diese URL und autorisieren die Anwendung. Wenn Sie mit dem Import fertig sind, können Sie die Autorisierung für diese App entfernen.
Dadurch wird eine Datei „oauth.json“ geschrieben. Halten Sie diese Datei geheim, solange die App autorisiert ist. Diese Datei enthält ein angemeldetes Sitzungstoken.
ytmusicapi ist eine Abhängigkeit dieser Software und sollte als Teil der „Pip-Installation“ installiert werden.
Backup
und warten Sie, bis der Vorgang abgeschlossen ist und Sie zur nächsten Registerkarte wechseln.ODER führen Sie alle folgenden Schritte aus
Laden Sie Spotify-Backup herunter.
Führen Sie spotify-backup.py
aus und es hilft Ihnen, den Zugriff auf Ihr Spotify-Konto zu autorisieren.
Führen Sie Folgendes aus: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Dadurch werden Ihre Playlists und Lieblingslieder in der Datei „playlists.json“ gespeichert.
Wie unten erwähnt, fügt das Originalprogramm die Songs in der „falschen“ Reihenfolge hinzu. Das ist eine Funktion, die mir nicht gefällt, deshalb habe ich ein Skript erstellt, um sie umzukehren. Es scheint zuverlässig zu sein, aber wenn Sie etwas Seltsames finden, öffnen Sie bitte ein Problem. Für alle Fälle wird eine Sicherungskopie der Originaldatei erstellt.
Beispiel: python3 .reverse_playlist.py ./playlists.json -r
import
und warten Sie, bis der Vorgang abgeschlossen ist und Sie zur nächsten Registerkarte wechseln.Es durchsucht Ihre Spotify-Likes und markiert sie mit „Gefällt mir“ auf YTMusic. Es wird das Lied von Spotify angezeigt und dann das Lied, das es auf YTMusic gefunden hat und das ihm gefällt. Ich habe meine Songs stichprobenartig überprüft und es scheint, dass die Abstimmung von YTMusic-Songs mit Spotify gute Arbeit leistet. Bisher habe ich bei ein paar hundert Songs keinen einzigen Fehler gesehen, aber bei eher esoterischen Titeln könnte es Probleme geben.
list
und warten Sie, bis der Vorgang abgeschlossen ist und zur nächsten Registerkarte gewechselt ist.Dadurch werden die Playlists aufgelistet, die Sie sowohl auf Spotify als auch auf YTMusic haben, sodass Sie sie einzeln kopieren können.
Sie können entweder alle Wiedergabelisten kopieren oder einzelne Wiedergabelisten präziser kopieren. Beim Kopieren aller Playlists wird der Name der Spotify-Playlist als Ziel-Playlist-Name auf YTMusic verwendet.
copy
und warten Sie, bis der Vorgang abgeschlossen ist und Sie zur nächsten Registerkarte wechseln.HINWEIS : Dadurch wird die Playlist „Gefällt mir“ nicht kopiert (siehe oben).
Suchen Sie in der Listenausgabe nach der „Playlist-ID“ (erste Spalte) der Spotify-Playlist und der YTMusic-Playlist.
copy
.Die kopierte Playlist übernimmt den Namen der YTMusic-Playlist und erstellt die Playlist, falls diese nicht existiert, wenn Sie die YTMusic-Playlist mit einem „+“ starten:
Das erneute Ausführen von „copy_playlist“ oder „load_liked“ sollte sicher sein, falls dies fehlschlägt, da dadurch keine Einträge in der Wiedergabeliste dupliziert werden.
ytmusicapi oauth
oder s2yt_ytoauth
oder python -m spotify2ytmusic ytoauth
Dadurch erhalten Sie eine URL, besuchen diese URL und autorisieren die Anwendung. Wenn Sie mit dem Import fertig sind, können Sie die Autorisierung für diese App entfernen.
Dadurch wird eine Datei „oauth.json“ geschrieben. Halten Sie diese Datei geheim, solange die App autorisiert ist. Diese Datei enthält ein angemeldetes Sitzungstoken.
ytmusicapi ist eine Abhängigkeit dieser Software und sollte als Teil der „Pip-Installation“ installiert werden.
Laden Sie Spotify-Backup herunter.
Führen Sie spotify-backup.py
aus und es wird Ihnen dabei helfen, den Zugriff auf Ihr Spotify-Konto zu autorisieren.
Führen Sie Folgendes aus: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Dadurch werden Ihre Playlists und Lieblingslieder in der Datei „playlists.json“ gespeichert.
Ausführen: s2yt_load_liked
Es durchsucht Ihre Spotify-Likes und markiert sie mit „Gefällt mir“ auf YTMusic. Es wird das Lied von Spotify angezeigt und dann das Lied, das es auf YTMusic gefunden hat und das ihm gefällt. Ich habe meine Songs stichprobenartig überprüft und es scheint, dass die Abstimmung von YTMusic-Songs mit Spotify gute Arbeit leistet. Bisher habe ich bei ein paar tausend Songs noch keinen einzigen Fehler gesehen, aber bei eher esoterischen Titeln könnte es Probleme geben.
Führen Sie Folgendes aus: s2yt_load_liked_albums
Spotify speichert „Likes“-Alben außerhalb der „Likes“-Playlist. Dies ist der Befehl, um Ihre Lieblingsalben in YTMusic-Likes-Songs zu laden.
Führen Sie s2yt_list_playlists
aus
Dadurch werden die Playlists aufgelistet, die Sie sowohl auf Spotify als auch auf YTMusic haben. Sie müssen sie einzeln kopieren.
Sie können entweder alle Wiedergabelisten kopieren oder einzelne Wiedergabelisten präziser kopieren. Beim Kopieren aller Playlists wird der Name der Spotify-Playlist als Ziel-Playlist-Name auf YTMusic verwendet. Um alle Playlists zu kopieren, führen Sie Folgendes aus:
s2yt_copy_all_playlists
HINWEIS : Dadurch wird die Playlist „Gefällt mir“ nicht kopiert (siehe oben).
Suchen Sie in der obigen Listenausgabe nach der „Playlist-ID“ (erste Spalte) der Spotify-Playlist und der YTMusic-Playlist und führen Sie dann Folgendes aus:
s2yt_copy_playlist <SPOTIFY_PLAYLIST_ID> <YTMUSIC_PLAYLIST_ID>
Wenn Sie eine Wiedergabeliste erstellen müssen, können Sie Folgendes ausführen:
s2yt_create_playlist "<PLAYLIST_NAME>"
Oder die Kopier-Playlist kann den Namen der YTMusic-Playlist annehmen und erstellt die Playlist, falls diese nicht existiert, wenn Sie die YTMusic-Playlist mit einem „+“ starten:
s2yt_copy_playlist <SPOTIFY_PLAYLIST_ID> +<YTMUSIC_PLAYLIST_NAME>
Zum Beispiel:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
Das erneute Ausführen von „copy_playlist“ oder „load_liked“ sollte sicher sein, falls dies fehlschlägt, da dadurch keine Einträge in der Wiedergabeliste dupliziert werden.
Dies dient hauptsächlich dem Debuggen, es gibt jedoch einen Befehl zum Suchen nach Titeln in YTMusic:
s2yt_search --artist <ARTIST> --album <ALBUM> <TRACK_NAME>
Die Funktion sucht zunächst nach Alben des angegebenen Künstlernamens auf YTMusic.
Anschließend werden die ersten drei Albumergebnisse durchlaufen und versucht, einen Titel zu finden, der genau denselben Namen wie der angegebene Titelname hat. Wenn eine Übereinstimmung gefunden wird, werden die Titelinformationen zurückgegeben.
Wenn die Funktion den Titel in den Alben nicht finden kann, sucht sie nach Titeln anhand des angegebenen Titelnamens und Künstlernamens.
Abhängig vom Parameter yt_search_algo führt es eine der folgenden Aktionen aus:
Wenn yt_search_algo 0 ist, wird einfach das erste Songergebnis zurückgegeben.
Wenn yt_search_algo 1 ist, werden die Songergebnisse durchlaufen und der erste Song zurückgegeben, der genau mit dem Titelnamen, dem Künstlernamen und dem Albumnamen übereinstimmt. Wenn keine Übereinstimmung gefunden werden kann, wird ein ValueError ausgelöst.
Wenn yt_search_algo 2 ist, wird ein Fuzzy-Match durchgeführt. Es entfernt alles in Klammern im Songtitel und prüft, ob eine Übereinstimmung mit dem Titelnamen, dem Künstlernamen und dem Albumnamen vorliegt. Wenn keine Übereinstimmung gefunden wird, wird nach Videos mit dem Namen des Titels und des Künstlers gesucht. Wenn immer noch keine Übereinstimmung gefunden wird, wird ein ValueError ausgelöst.
Wenn die Funktion den Titel mit einer der oben genannten Methoden nicht finden kann, löst sie einen ValueError aus.
Nein, dies läuft unter Linux/Windows/MacOS.
Ich erhalte die Meldung „Keine passende Distribution für spotify2ytmusic gefunden“.
Dies wurde in Ausgabe Nr. 39 gemeldet und scheint eine Diskrepanz zwischen den Python-Versionen zu sein. Dort mussten Benutzer unter MacOS eine bestimmte Version von Python installieren und dann die passende Version von PIP verwenden:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
Wie funktioniert der Suchalgorithmus?
Anhand der Spotify-Titelinformationen wird auf YTMusic nach dem Album desselben Künstlers gesucht und dann bei den ersten drei Treffern nach einem Titel mit genau demselben Namen gesucht. Falls der genaue Titel nicht gefunden werden kann, sucht er nach Titeln desselben Künstlers nach dem Titelnamen und gibt einfach den ersten Treffer zurück.
Die Idee dahinter ist, dass es wahrscheinlicher ist, das Album und den Interpreten zu finden und dann nach der genauen Titelübereinstimmung zu suchen, als nach dem Song und Interpreten zu suchen und sich auf den YTMusic-Algorithmus zu verlassen, um die Dinge herauszufinden, insbesondere bei kurzen Tracks, die möglicherweise vorhanden sind viele widersprüchliche Hits wie „Survival by Yes“.
Mein Kopiervorgang schlägt mit der wiederholten Meldung „FEHLER: (Wiederholung) Server hat HTTP 400 zurückgegeben: Ungültige Anforderung“ fehl.
Versuchen Sie es mit dem Argument „--track-sleep=3“, um zwischen den Titeln einen Ruhezustand von 3 Sekunden einzuhalten. Dies wird viel länger dauern, könnte aber dort gelingen, wo schnellere Tarife versagt haben.
Creative Commons Zero v1.0 Universal
spotify-backup.py lizenziert unter MIT-Lizenz. Weitere Informationen finden Sie unter https://github.com/caseychu/spotify-backup.