Herramientas para pasar de Spotify a YTMusic
Este es un conjunto de scripts para copiar canciones y listas de reproducción que "me gustan" de Spotify a YTMusic. Proporciona herramientas CLI y una GUI (implementada por Yoween, anteriormente llamada spotify_to_ytmusic_gui).
Gracias a @RadicalArti y Meet Vora por sus generosas contribuciones financieras a este proyecto.
Necesitará una versión algo reciente de Python 3.10 y superior que se sabe que funciona, 3.8-3.10 podría funcionar.
Descargue Python para Windows desde: https://www.python.org/downloads/windows/
También puedes usar choco para instalarlo: choco install python
Correr:
brew install python
brew install python-tk
Instale certificados haciendo:
Macintosh HD > Aplicaciones > Carpeta Python > haga doble clic en el archivo "Instalar certificados.comando".
Probablemente ya lo tengas instalado. Consulte el administrador de paquetes de su elección para instalarlo.
Este paquete está disponible en pip, por lo que puedes instalarlo usando:
pip install spotify2ytmusic
o:
python3 -m pip install spotify2ytmusic
(No recomendado)
Otra opción, en lugar de pip, es simplemente clonar este repositorio y ejecutarlo directamente desde la fuente. Sin embargo, necesitarás tener instalado el paquete "ytmusicapi", por lo que probablemente querrás usar pip para instalarlo como mínimo.
Para ejecutar directamente desde la fuente:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
Luego, puede anteponer el comando que desea ejecutar con python3 -m spotify2ytmusic
, por ejemplo:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
Si lo ha instalado a través de PIP, debería poder ejecutar: s2yt_gui
De lo contrario, si se ejecuta desde la fuente:
En Windows: python -m spotify2ytmusic gui
O en Linux: python3 -m spotify2ytmusic gui
login
en la primera pestaña.O
Ejecute ytmusicapi oauth
en una consola.
O
Ejecute s2yt_ytoauth
O
Ejecute python -m spotify2ytmusic ytoauth
Esto le dará una URL, visite esa URL y autorice la aplicación. Cuando haya terminado con la importación, puede eliminar la autorización para esta aplicación.
Esto escribirá un archivo "oauth.json". Mantenga este archivo en secreto mientras la aplicación esté autorizada. Este archivo incluye un token de sesión iniciada.
ytmusicapi es una dependencia de este software y debe instalarse como parte de la "instalación de pip".
Backup
y espere hasta que finalice y cambie a la siguiente pestaña.O siga todos los pasos a continuación
Descargar spotify-backup.
Ejecute spotify-backup.py
y le ayudará a autorizar el acceso a su cuenta de Spotify.
Ejecutar: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Esto guardará sus listas de reproducción y las canciones que le gustan en el archivo "playlists.json".
Como se menciona a continuación, el programa original agrega las canciones en el orden "incorrecto". Esa es una característica que no me gusta, así que creé un script para revertirlas. Parece confiable, pero si encuentra algo extraño, abra un problema. De todos modos, crea una copia de seguridad del archivo original por si acaso.
Ejemplo: python3 .reverse_playlist.py ./playlists.json -r
import
y espere hasta que termine y cambie a la siguiente pestaña.Revisará las canciones que le gustan de Spotify y le darán me gusta en YTMusic. Mostrará la canción de Spotify y luego la canción que encontró en YTMusic y que le gusta. Revisé mis canciones y parece estar haciendo un buen trabajo al hacer coincidir las canciones de YTMusic con Spotify. Hasta ahora no he visto ni un solo fallo en un par de cientos de canciones, pero puede que tenga problemas con títulos más esotéricos.
list
y espere hasta que termine y cambie a la siguiente pestaña.Esto enumerará las listas de reproducción que tienes tanto en Spotify como en YTMusic, para que puedas copiarlas individualmente.
Puede copiar todas las listas de reproducción o hacer una copia más quirúrgica de listas de reproducción individuales. Al copiar todas las listas de reproducción se utilizará el nombre de la lista de reproducción de Spotify como nombre de la lista de reproducción de destino en YTMusic.
copy
y espere hasta que termine y cambie a la siguiente pestaña.NOTA : Esto no copia la lista de reproducción Me gusta (consulte arriba para hacerlo).
En el resultado de la lista, busque la "identificación de la lista de reproducción" (la primera columna) de la lista de reproducción de Spotify y de la lista de reproducción de YTMusic.
copy
.La lista de reproducción de copia tomará el nombre de la lista de reproducción de YTMusic y creará la lista de reproducción si no existe, si inicia la lista de reproducción de YTMusic con un "+":
Volver a ejecutar "copy_playlist" o "load_liked" en caso de que falle debería ser seguro, no duplicará las entradas de la lista de reproducción.
ytmusicapi oauth
o s2yt_ytoauth
o python -m spotify2ytmusic ytoauth
Esto le dará una URL, visite esa URL y autorice la aplicación. Cuando haya terminado con la importación, puede eliminar la autorización para esta aplicación.
Esto escribirá un archivo "oauth.json". Mantenga este archivo en secreto mientras la aplicación esté autorizada. Este archivo incluye un token de sesión iniciada.
ytmusicapi es una dependencia de este software y debe instalarse como parte de la "instalación de pip".
Descargar spotify-backup.
Ejecute spotify-backup.py
y le ayudará a autorizar el acceso a su cuenta de Spotify.
Ejecutar: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Esto guardará sus listas de reproducción y las canciones que le gustan en el archivo "playlists.json".
Ejecutar: s2yt_load_liked
Revisará las canciones que le gustan de Spotify y le darán me gusta en YTMusic. Mostrará la canción de Spotify y luego la canción que encontró en YTMusic y que le gusta. Revisé mis canciones y parece estar haciendo un buen trabajo al hacer coincidir las canciones de YTMusic con Spotify. Hasta ahora no he visto ni un solo fallo en un par de miles de canciones, pero es posible que tenga problemas con títulos más esotéricos.
Ejecutar: s2yt_load_liked_albums
A las tiendas de Spotify les gustaron los álbumes fuera de la lista de reproducción "Canciones que me gustan". Este es el comando para cargar los álbumes que te gustan en las canciones que te gustan de YTMusic.
Ejecute s2yt_list_playlists
Esto enumerará las listas de reproducción que tienes tanto en Spotify como en YTMusic. Deberá copiarlos individualmente.
Puede copiar todas las listas de reproducción o hacer una copia más quirúrgica de listas de reproducción individuales. Al copiar todas las listas de reproducción se utilizará el nombre de la lista de reproducción de Spotify como nombre de la lista de reproducción de destino en YTMusic. Para copiar todas las listas de reproducción, ejecute:
s2yt_copy_all_playlists
NOTA : Esto no copia la lista de reproducción Me gusta (consulte arriba para hacerlo).
En el resultado de la lista anterior, busque la "identificación de la lista de reproducción" (la primera columna) de la lista de reproducción de Spotify y de la lista de reproducción de YTMusic, y luego ejecute:
s2yt_copy_playlist
Si necesita crear una lista de reproducción, puede ejecutar:
s2yt_create_playlist "
O la copia de lista de reproducción puede tomar el nombre de la lista de reproducción de YTMusic y creará la lista de reproducción si no existe, si inicia la lista de reproducción de YTMusic con un "+":
s2yt_copy_playlist
Por ejemplo:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
Volver a ejecutar "copy_playlist" o "load_liked" en caso de que falle debería ser seguro, no duplicará las entradas de la lista de reproducción.
Esto es principalmente para depurar, pero hay un comando para buscar pistas en YTMusic:
s2yt_search --artist
La función primero busca álbumes por el nombre del artista indicado en YTMusic.
Luego itera sobre los primeros tres resultados del álbum e intenta encontrar una pista con exactamente el mismo nombre que el nombre de la pista dada. Si encuentra una coincidencia, devuelve la información de la pista.
Si la función no puede encontrar la pista en los álbumes, busca canciones por el nombre de la pista y el nombre del artista.
Dependiendo del parámetro yt_search_algo realiza una de las siguientes acciones:
Si yt_search_algo es 0, simplemente devuelve el resultado de la primera canción.
Si yt_search_algo es 1, itera sobre los resultados de la canción y devuelve la primera canción que coincide exactamente con el nombre de la pista, el nombre del artista y el nombre del álbum. Si no puede encontrar una coincidencia, genera un ValueError.
Si yt_search_algo es 2, realiza una coincidencia aproximada. Elimina todo lo que está entre paréntesis en el título de la canción y busca una coincidencia con el nombre de la pista, el nombre del artista y el nombre del álbum. Si no puede encontrar una coincidencia, busca vídeos con el nombre de la pista y el nombre del artista. Si aún no puede encontrar una coincidencia, genera un ValueError.
Si la función no puede encontrar la pista utilizando ninguno de los métodos anteriores, genera un ValueError.
No, esto se ejecuta en Linux/Windows/MacOS.
Aparece el mensaje "No se encontró ninguna distribución coincidente para spotify2ytmusic".
Esto se informó en el número 39 y parece una discrepancia entre las versiones de Python. Los usuarios allí, en MacOS, necesitaban instalar una versión específica de Python y luego usar la versión correspondiente de PIP:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
¿Cómo funciona el algoritmo de búsqueda?
Dada la información de la pista de Spotify, busca el álbum del mismo artista en YTMusic, luego busca los primeros 3 éxitos en busca de una pista con exactamente el mismo nombre. En el caso de que no pueda encontrar esa pista exacta, busca canciones por el nombre de la pista del mismo artista y simplemente devuelve el primer resultado.
La idea es que encontrar el álbum y el artista y luego buscar la pista exacta que coincida tendrá más probabilidades de ser exacto que buscar la canción y el artista y confiar en el algoritmo de YTMusic para resolver las cosas, especialmente para pistas cortas que podrían tener muchos éxitos contradictorios como "Survival by Yes".
Mi copia falla y repite "ERROR: (Reintentando) El servidor devolvió HTTP 400: Solicitud incorrecta".
Intente ejecutar con el argumento "--track-sleep=3" para dormir 3 segundos entre pistas. Esto llevará mucho más tiempo, pero puede tener éxito allí donde las tasas más rápidas han fracasado.
Creative Commons Cero v1.0 Universal
spotify-backup.py con licencia MIT. Consulte https://github.com/caseychu/spotify-backup para obtener más información.