Outils pour passer de Spotify à YTMusic
Il s'agit d'un ensemble de scripts permettant de copier des chansons et des listes de lecture « appréciées » de Spotify vers YTMusic. Il fournit à la fois des outils CLI et une interface graphique (implémentée par Yoween, anciennement appelée spotify_to_ytmusic_gui).
Merci à @RadicalArti et Meet Vora pour leurs généreuses contributions financières à ce projet.
Vous aurez besoin d'une version quelque peu récente de Python 3.10 et supérieure, connue pour fonctionner, 3.8-3.10 pourrait fonctionner.
Téléchargez Python pour Windows depuis : https://www.python.org/downloads/windows/
Vous pouvez également utiliser choco pour l'installer : choco install python
Courir:
brew install python
brew install python-tk
Installez les certificats en procédant :
Macintosh HD > Applications > Dossier Python > double-cliquez sur le fichier « Install Certificates.command ».
Vous l'avez probablement déjà installé. Consultez le gestionnaire de paquets de votre choix pour l'installer.
Ce package est disponible sur pip, vous pouvez donc l'installer en utilisant :
pip install spotify2ytmusic
ou:
python3 -m pip install spotify2ytmusic
(Non recommandé)
Une autre option, au lieu de pip, consiste simplement à cloner ce référentiel et à l'exécuter directement à partir de la source. Cependant, vous aurez besoin du package "ytmusicapi" installé, vous souhaiterez donc probablement utiliser pip pour l'installer au moins.
Pour exécuter directement à partir des sources :
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
Ensuite, vous pouvez préfixer la commande que vous souhaitez exécuter avec python3 -m spotify2ytmusic
, par exemple :
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
Si vous avez installé via PIP, vous devriez pouvoir exécuter : s2yt_gui
Sinon, si vous exécutez à partir des sources :
Sous Windows : python -m spotify2ytmusic gui
Ou sous Linux : python3 -m spotify2ytmusic gui
login
sur le premier ongletOU
Exécutez ytmusicapi oauth
dans une console.
OU
Exécutez s2yt_ytoauth
OU
Exécutez python -m spotify2ytmusic ytoauth
Cela vous donnera une URL, visitera cette URL et autorisera l'application. Lorsque vous avez terminé l'importation, vous pouvez supprimer l'autorisation pour cette application.
Cela écrira un fichier "oauth.json". Gardez ce fichier secret pendant que l'application est autorisée. Ce fichier comprend un jeton de session connectée.
ytmusicapi est une dépendance de ce logiciel et doit être installé dans le cadre de "pip install".
Backup
et attendez qu'il soit terminé et passe à l'onglet suivant.OU effectuez toutes les étapes ci-dessous
Téléchargez Spotify-backup.
Exécutez spotify-backup.py
et cela vous aidera à autoriser l'accès à votre compte Spotify.
Exécutez : python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Cela enregistrera vos listes de lecture et vos chansons préférées dans le fichier "playlists.json".
Comme mentionné ci-dessous, le programme original ajoute les chansons dans le « mauvais » ordre. C'est une fonctionnalité que je n'aime pas, alors j'ai créé un script pour les inverser. Cela semble fiable, mais si vous trouvez quelque chose de bizarre, veuillez ouvrir un problème. Il crée une sauvegarde du fichier original au cas où.
Exemple : python3 .reverse_playlist.py ./playlists.json -r
import
et attendez qu'il soit terminé et passe à l'onglet suivant.Il passera en revue vos chansons préférées sur Spotify et les aimera sur YTMusic. Il affichera la chanson de Spotify, puis la chanson qu'il a trouvée sur YTMusic et qu'il aime. J'ai vérifié mes chansons et il semble faire du bon travail en faisant correspondre les chansons YTMusic avec Spotify. Jusqu'à présent, je n'ai pas vu un seul échec sur quelques centaines de chansons, mais des titres plus ésotériques peuvent poser problème.
list
et attendez qu'il soit terminé et passe à l'onglet suivant.Cela répertoriera les listes de lecture que vous avez sur Spotify et YTMusic, afin que vous puissiez les copier individuellement.
Vous pouvez soit copier toutes les listes de lecture, soit effectuer une copie plus chirurgicale de listes de lecture individuelles. La copie de toutes les listes de lecture utilisera le nom de la liste de lecture Spotify comme nom de la liste de lecture de destination sur YTMusic.
copy
, attendez la fin et passez à l'onglet suivant.REMARQUE : Cela ne copie pas la liste de lecture J'ai aimé (voir ci-dessus pour ce faire).
Dans la sortie de la liste, recherchez le "playlist id" (la première colonne) de la playlist Spotify et de la playlist YTMusic.
copy
.La playlist de copie prendra le nom de la playlist YTMusic et créera la playlist si elle n'existe pas, si vous démarrez la playlist YTMusic par un "+" :
La réexécution de "copy_playlist" ou "load_liked" en cas d'échec devrait être sûre, cela ne dupliquera pas les entrées de la liste de lecture.
ytmusicapi oauth
ou s2yt_ytoauth
ou python -m spotify2ytmusic ytoauth
Cela vous donnera une URL, visitera cette URL et autorisera l'application. Lorsque vous avez terminé l'importation, vous pouvez supprimer l'autorisation pour cette application.
Cela écrira un fichier "oauth.json". Gardez ce fichier secret pendant que l'application est autorisée. Ce fichier comprend un jeton de session connectée.
ytmusicapi est une dépendance de ce logiciel et doit être installé dans le cadre de "pip install".
Téléchargez Spotify-backup.
Exécutez spotify-backup.py
et cela vous aidera à autoriser l'accès à votre compte Spotify.
Exécutez : python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Cela enregistrera vos listes de lecture et vos chansons préférées dans le fichier "playlists.json".
Exécuter : s2yt_load_liked
Il passera en revue vos chansons préférées sur Spotify et les aimera sur YTMusic. Il affichera la chanson de Spotify, puis la chanson qu'il a trouvée sur YTMusic et qu'il aime. J'ai vérifié mes chansons et il semble faire du bon travail en faisant correspondre les chansons YTMusic avec Spotify. Jusqu'à présent, je n'ai pas vu un seul échec sur quelques milliers de chansons, mais des titres plus ésotériques peuvent poser problème.
Exécuter : s2yt_load_liked_albums
Spotify stocke les albums appréciés en dehors de la liste de lecture « Chansons aimées ». Il s'agit de la commande permettant de charger vos albums préférés dans les chansons appréciées de YTMusic.
Exécutez s2yt_list_playlists
Cela répertoriera les listes de lecture que vous avez sur Spotify et YTMusic. Vous devrez les copier individuellement.
Vous pouvez soit copier toutes les listes de lecture, soit effectuer une copie plus chirurgicale de listes de lecture individuelles. La copie de toutes les listes de lecture utilisera le nom de la liste de lecture Spotify comme nom de la liste de lecture de destination sur YTMusic. Pour copier toutes les playlists, exécutez :
s2yt_copy_all_playlists
REMARQUE : Cela ne copie pas la liste de lecture J'ai aimé (voir ci-dessus pour ce faire).
Dans la liste ci-dessus, recherchez "l'identifiant de la playlist" (la première colonne) de la playlist Spotify et de la playlist YTMusic, puis exécutez :
s2yt_copy_playlist
Si vous devez créer une playlist, vous pouvez exécuter :
s2yt_create_playlist "
Ou bien la playlist de copie peut prendre le nom de la playlist YTMusic et créera la playlist si elle n'existe pas, si vous démarrez la playlist YTMusic par un "+" :
s2yt_copy_playlist
Par exemple:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
La réexécution de "copy_playlist" ou "load_liked" en cas d'échec devrait être sûre, cela ne dupliquera pas les entrées de la liste de lecture.
C'est principalement pour le débogage, mais il existe une commande pour rechercher des pistes dans YTMusic :
s2yt_search --artist
La fonction recherche d'abord les albums par le nom d'artiste donné sur YTMusic.
Il parcourt ensuite les trois premiers résultats de l'album et essaie de trouver une piste portant exactement le même nom que le nom de piste donné. S'il trouve une correspondance, il renvoie les informations de piste.
Si la fonction ne trouve pas la piste dans les albums, elle recherche alors les chansons par le nom de la piste et le nom de l'artiste donnés.
En fonction du paramètre yt_search_algo, il effectue l'une des actions suivantes :
Si yt_search_algo vaut 0, il renvoie simplement le premier résultat de la chanson.
Si yt_search_algo vaut 1, il parcourt les résultats de la chanson et renvoie la première chanson qui correspond exactement au nom de la piste, au nom de l'artiste et au nom de l'album. S'il ne trouve pas de correspondance, il génère une ValueError.
Si yt_search_algo vaut 2, il effectue une correspondance floue. Il supprime tout ce qui est entre parenthèses dans le titre de la chanson et vérifie la correspondance avec le nom de la piste, le nom de l'artiste et le nom de l'album. S'il ne trouve pas de correspondance, il recherche ensuite des vidéos avec le nom de la piste et le nom de l'artiste. S'il ne trouve toujours pas de correspondance, il génère une ValueError.
Si la fonction ne parvient pas à trouver la piste à l'aide de l'une des méthodes ci-dessus, elle génère une ValueError.
Non, cela fonctionne sous Linux/Windows/MacOS.
J'obtiens "Aucune distribution correspondante trouvée pour spotify2ytmusic".
Cela a été signalé dans le numéro 39 et cela semble être une incompatibilité entre les versions de Python. Les utilisateurs, sur MacOS, devaient installer une version spécifique de Python, puis utiliser la version correspondante de PIP :
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
Comment fonctionne l'algorithme de recherche ?
Compte tenu des informations sur le morceau Spotify, il recherche l'album du même artiste sur YTMusic, puis examine les 3 premiers hits à la recherche d'un morceau portant exactement le même nom. Dans le cas où il ne trouve pas cette piste exacte, il effectue alors une recherche de chansons pour le nom de la piste du même artiste et renvoie simplement le premier hit.
L'idée est que trouver l'album et l'artiste, puis rechercher la correspondance exacte du morceau sera plus susceptible d'être précis que de rechercher la chanson et l'artiste et de s'appuyer sur l'algorithme YTMusic pour comprendre les choses, en particulier pour les morceaux courts qui pourraient être de nombreux hits contradictoires comme "Survival by Yes".
Ma copie échoue avec le message « ERREUR : (Réessai) Le serveur a renvoyé HTTP 400 : Demande incorrecte ».
Essayez d'exécuter avec l'argument "--track-sleep=3" pour faire une veille de 3 secondes entre les pistes. Cela prendra beaucoup plus de temps, mais pourrait réussir là où des taux plus rapides ont échoué.
Creative Commons Zero v1.0 Universel
spotify-backup.py sous licence MIT. Voir https://github.com/caseychu/spotify-backup pour plus d'informations.