Ferramentas para migrar do Spotify para o YTMusic
Este é um conjunto de scripts para copiar músicas e playlists "curtidas" do Spotify para o YTMusic. Ele fornece ferramentas CLI e uma GUI (implementada por Yoween, anteriormente chamada spotify_to_ytmusic_gui).
Obrigado a @RadicalArti e Meet Vora por suas generosas contribuições financeiras para este projeto.
Você precisará de uma versão um tanto recente do Python 3.10 e superior que funcione, 3.8-3.10 pode funcionar.
Baixe Python para Windows em: https://www.python.org/downloads/windows/
Você também pode usar o choco para instalá-lo: choco install python
Correr:
brew install python
brew install python-tk
Instale certificados fazendo:
Macintosh HD > Aplicativos > Pasta Python > clique duas vezes no arquivo "Install Certificates.command".
Você provavelmente já o instalou. Consulte o gerenciador de pacotes de sua preferência para instalá-lo.
Este pacote está disponível no pip, então você pode instalá-lo usando:
pip install spotify2ytmusic
ou:
python3 -m pip install spotify2ytmusic
(Não recomendado)
Outra opção, em vez do pip, é simplesmente clonar este repositório e executá-lo diretamente da fonte. No entanto, você precisará do pacote "ytmusicapi" instalado, então provavelmente desejará usar o pip para instalá-lo, pelo menos.
Para executar diretamente da fonte:
git clone [email protected]:linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
pip install ytmusicapi
pip install tk # If using the GUI
Então você pode prefixar o comando que deseja executar com python3 -m spotify2ytmusic
, por exemplo:
python3 -m spotify2ytmusic gui
python3 -m spotify2ytmusic list_playlists
python3 -m spotify2ytmusic load_liked
[etc...]
Se você instalou via PIP, deverá conseguir executar: s2yt_gui
Caso contrário, se estiver executando a partir da fonte:
No Windows: python -m spotify2ytmusic gui
Ou no Linux: python3 -m spotify2ytmusic gui
login
na primeira guiaOU
Execute ytmusicapi oauth
em um console.
OU
Execute s2yt_ytoauth
OU
Execute python -m spotify2ytmusic ytoauth
Isso lhe dará um URL, visite esse URL e autorize o aplicativo. Quando terminar a importação, você poderá remover a autorização deste aplicativo.
Isto irá gravar um arquivo "oauth.json". Mantenha este arquivo em segredo enquanto o aplicativo estiver autorizado. Este arquivo inclui um token de sessão logado.
ytmusicapi é uma dependência deste software e deve ser instalado como parte da "instalação do pip".
Backup
e espere até terminar e mudar para a próxima guia.OU execute todos os passos abaixo
Baixe o backup do spotify.
Execute spotify-backup.py
e isso o ajudará a autorizar o acesso à sua conta Spotify.
Execute: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Isso salvará suas playlists e músicas favoritas no arquivo "playlists.json".
Conforme mencionado abaixo, o programa original adiciona as músicas na ordem “errada”. Esse é um recurso que não gosto, então criei um script para revertê-los. Parece ser confiável, mas se você encontrar algo estranho, abra um problema. Ele cria um backup do arquivo original, apenas para garantir.
Exemplo: python3 .reverse_playlist.py ./playlists.json -r
import
e espere até terminar e passar para a próxima guia.Ele irá passar pelas suas músicas favoritas do Spotify e curti-las no YTMusic. Ele exibirá a música do Spotify e depois a música que encontrou no YTMusic e que está gostando. Eu verifiquei minhas músicas e parece estar fazendo um bom trabalho ao combinar as músicas do YTMusic com o Spotify. Até agora, não vi uma única falha em algumas centenas de músicas, mas em títulos mais esotéricos pode haver problemas.
list
e espere até terminar e mudar para a próxima guia.Isso listará as playlists que você possui no Spotify e no YTMusic, para que você possa copiá-las individualmente.
Você pode copiar todas as playlists ou fazer uma cópia mais cirúrgica de playlists individuais. Copiar todas as playlists usará o nome da playlist do Spotify como nome da playlist de destino no YTMusic.
copy
e espere até terminar e passar para a próxima aba.NOTA : Isso não copia a lista de reprodução Curtida (veja acima para fazer isso).
Na saída da lista, encontre o "id da lista de reprodução" (a primeira coluna) da lista de reprodução do Spotify e da lista de reprodução do YTMusic.
copy
.A lista de reprodução copiada terá o nome da lista de reprodução YTMusic e criará a lista de reprodução se ela não existir, se você iniciar a lista de reprodução YTMusic com um "+":
Executar novamente "copy_playlist" ou "load_liked" no caso de falha deve ser seguro, pois não duplicará as entradas na lista de reprodução.
ytmusicapi oauth
ou s2yt_ytoauth
ou python -m spotify2ytmusic ytoauth
Isso lhe dará um URL, visite esse URL e autorize o aplicativo. Quando terminar a importação, você poderá remover a autorização deste aplicativo.
Isto irá gravar um arquivo "oauth.json". Mantenha este arquivo em segredo enquanto o aplicativo estiver autorizado. Este arquivo inclui um token de sessão logado.
ytmusicapi é uma dependência deste software e deve ser instalado como parte da "instalação do pip".
Baixe o backup do spotify.
Execute spotify-backup.py
e isso o ajudará a autorizar o acesso à sua conta Spotify.
Execute: python3 spotify-backup.py playlists.json --dump=liked,playlists --format=json
Isso salvará suas playlists e músicas favoritas no arquivo "playlists.json".
Execute: s2yt_load_liked
Ele irá passar pelas suas músicas favoritas do Spotify e curti-las no YTMusic. Ele exibirá a música do Spotify e depois a música que encontrou no YTMusic e que está gostando. Eu verifiquei minhas músicas e parece estar fazendo um bom trabalho ao combinar as músicas do YTMusic com o Spotify. Até agora não vi uma única falha em alguns milhares de músicas, mas em títulos mais esotéricos pode haver problemas.
Execute: s2yt_load_liked_albums
As lojas Spotify curtiram álbuns fora da playlist "Músicas curtidas". Este é o comando para carregar seus álbuns favoritos nas músicas favoritas do YTMusic.
Execute s2yt_list_playlists
Isso listará as playlists que você tem no Spotify e no YTMusic. Você precisará copiá-los individualmente.
Você pode copiar todas as playlists ou fazer uma cópia mais cirúrgica de playlists individuais. Copiar todas as playlists usará o nome da playlist do Spotify como nome da playlist de destino no YTMusic. Para copiar todas as playlists, execute:
s2yt_copy_all_playlists
NOTA : Isso não copia a lista de reprodução Curtida (veja acima para fazer isso).
Na saída da lista acima, encontre o "id da lista de reprodução" (a primeira coluna) da lista de reprodução do Spotify e da lista de reprodução do YTMusic e execute:
s2yt_copy_playlist <SPOTIFY_PLAYLIST_ID> <YTMUSIC_PLAYLIST_ID>
Se precisar criar uma lista de reprodução, você pode executar:
s2yt_create_playlist "<PLAYLIST_NAME>"
Ou a lista de reprodução copiada pode levar o nome da lista de reprodução YTMusic e criará a lista de reprodução se ela não existir, se você iniciar a lista de reprodução YTMusic com um "+":
s2yt_copy_playlist <SPOTIFY_PLAYLIST_ID> +<YTMUSIC_PLAYLIST_NAME>
Por exemplo:
s2yt_copy_playlist SPOTIFY_PLAYLIST_ID "+Feeling Like a PUNK"
Executar novamente "copy_playlist" ou "load_liked" no caso de falha deve ser seguro, pois não duplicará as entradas na lista de reprodução.
Isso é principalmente para depuração, mas existe um comando para procurar faixas no YTMusic:
s2yt_search --artist <ARTIST> --album <ALBUM> <TRACK_NAME>
A função primeiro procura álbuns pelo nome do artista no YTMusic.
Em seguida, ele percorre os três primeiros resultados do álbum e tenta encontrar uma faixa com exatamente o mesmo nome do nome da faixa fornecida. Se encontrar uma correspondência, ele retornará as informações da faixa.
Se a função não conseguir encontrar a faixa nos álbuns, ela procurará músicas pelo nome da faixa e pelo nome do artista fornecidos.
Dependendo do parâmetro yt_search_algo, ele executa uma das seguintes ações:
Se yt_search_algo for 0, ele simplesmente retornará o resultado da primeira música.
Se yt_search_algo for 1, ele itera sobre os resultados da música e retorna a primeira música que corresponde exatamente ao nome da faixa, ao nome do artista e ao nome do álbum. Se não conseguir encontrar uma correspondência, gera um ValueError.
Se yt_search_algo for 2, ele realizará uma correspondência difusa. Ele remove tudo entre colchetes no título da música e verifica se há correspondência com o nome da faixa, o nome do artista e o nome do álbum. Se não conseguir encontrar uma correspondência, ele procura vídeos com o nome da faixa e o nome do artista. Se ainda não conseguir encontrar uma correspondência, gerará um ValueError.
Se a função não conseguir encontrar a faixa usando nenhum dos métodos acima, ela gerará um ValueError.
Não, isso funciona em Linux/Windows/MacOS.
Recebo "Nenhuma distribuição correspondente encontrada para spotify2ytmusic".
Isso foi relatado na edição nº 39 e parece uma incompatibilidade entre as versões do python. Os usuários lá, no MacOS, precisavam instalar uma versão específica do Python e, em seguida, usar a versão correspondente do PIP:
brew install [email protected]
brew install [email protected]
pip3.10 install spotify2ytmusic
Como funciona o algoritmo de pesquisa?
Dadas as informações da faixa do Spotify, ele procura o álbum do mesmo artista no YTMusic e, em seguida, analisa os 3 primeiros hits em busca de uma faixa com exatamente o mesmo nome. Caso não consiga encontrar a faixa exata, ele então faz uma busca nas músicas pelo nome da faixa do mesmo artista e simplesmente retorna o primeiro hit.
A ideia é que encontrar o álbum e o artista e depois procurar a correspondência exata da faixa terá mais probabilidade de ser preciso do que pesquisar a música e o artista e confiar no algoritmo YTMusic para descobrir as coisas, especialmente para faixas curtas que possam ter muitos sucessos contraditórios como "Survival by Yes".
Minha cópia está falhando com repetido "ERRO: (nova tentativa) o servidor retornou HTTP 400: solicitação incorreta".
Tente executar com o argumento "--track-sleep = 3" para dormir 3 segundos entre as faixas. Isto levará muito mais tempo, mas poderá ter sucesso onde as taxas mais rápidas falharam.
Creative Commons Zero v1.0 Universal
spotify-backup.py licenciado sob licença MIT. Consulte https://github.com/caseychu/spotify-backup para obter mais informações.