Como transferir playlists gratuitamente do Spotify para o YoutubeMusic
Obs: Esse artigo é uma tradução livre e simplificada da documentação oficial da ferramenta Spotify to YTMusic. Se você tem habilidades hackers e sabe se virar em inglês, é altamente recomendado que acesse o material original.
Esse post tem patrocínio e oferecimento do jeferson, lar das bichas autistas mais tecnológicas do universo, com agradecimento especial a Arthur "sem nosão", que me indicou essa ferramente em particular. Vamos direto ao ponto então: como transferir playlists gratuitamente do Spotify para o YoutubeMusic?
- Primeiramente
Certifique-se de que você tem Python e Git instalados no seu computador. Para isso, abra o terminal (ou o prompt de comando, se estiver usando windows) e digite:
python --version
git --version
Após apertar enter, as versões de git e python da sua máquina devem aparecer no terminal assim:
Caso você precise instalar o python e/ou git no seu computador, utilize os links abaixo:
Como Instalar o Git no Windows e Linux
Como instalar Python
- Clone de repositório, ambiente virtual e pacotes necessários
O próximo passo é clonar o repositório, então pense bem na pasta onde você quer deixar o programa para não gerar uma grande bagunça. Depois de escolher a pasta dentro do seu sistema, você pode abrir o terminal a partir dela.1 2
Depois, é só colar o comando a seguir e apertar enter:
git clone https://github.com/linsomniac/spotify_to_ytmusic.git
cd spotify_to_ytmusic
Em seguida, vamos criar o ambiente virtual, acessá-lo e instalar a api do YoutubeMusic, usando o seguinte comando:
No Windows:
python -m venv .venv
.venv\Scripts\activate
pip install ytmusicapi tk
Linux ou Mac:
python3 -m venv .venv
source .venv/bin/activate
pip install ytmusicapi tk
- Gerando credenciais do YouTubeMusic
Essa é a parte mais complicadinha do tutorial. Para usar a API do YouTubeMusic, precisaremos gerar uma credencial válida. Então, siga esses passos:
Faça login no YoutubeMusic pelo seu navegador.
Abra a ferramenta de inspeção do navegador pressionando F12 no teclado ou clicando com o botão direito na página e indo na opção "inspecionar".
Acesse a aba "Rede". Aqui, você verá uma lista que parece uma planilha de excel, com linhas e colunas. Detecte a coluna "Método" e clique nela para reordenar as linhas. Então, procure uma linha que tenha valores parecidos com a linha abaixo:
Status: 200 | Método: POST | Domínio: music.youtube.com
Se, incialmente, uma linha assim não estiver disponível, aperte em F5 no seu teclado ou recarregue a página para que novas requisições sejam feitas e a lista seja atualizada.
Depois de atualizar e detectar a linha, clique nela e observe que se abrirá uma aba lateral no menu de inspeção, no lado direito. Dentre as opções deste novo menu, observe se você está na aba de "Cabeçalhos" (e se não estiver, vá até ela). Navegue entre as opções de cabeçalhos até achar Cabeçalhos da requisição. Ao lado dessa opção, deve ter um botão com a opção "Bruto" ou "RAW". Habilite-o.
Com o cabeçalho no formato bruto, aperte com o botão direito, escolha a opção "Selecionar tudo" e copie o conteúdo.
Vá até a pasta onde você deixou instalado o programa e encontre o arquivo
raw_headers.txt
. Abra o arquivo e cole o conteúdo copiado acima dentro dele, salvando antes de fechá-lo.O próximo passo é executar o script para gerar as credenciais. Para isso, volte ao terminal e utilize o seguinte comando:
No Windows:
python spotify2ytmusic/ytmusic_credentials.py
Linux ou Mac:
python3 spotify2ytmusic/ytmusic_credentials.py
Importante: depois de rodar esse script, o arquivo de autenticação será criado. Se você iniciar o aplicativo através da interface gráfica, como será mostrado no passo seguinte, ele detectará automaticamente esse arquivo e fará login no YoutubeMusic. Você verá uma mensagem confirmando isso: File detected, auto login
. A interface gráfica ignorará a aba de login e te levará diretamente para a aba de backup do Spotify.
- Use a interface gráfica para migrar playlists
Agora você já pode usar a interface gráfica! No terminal, execute o comando abaixo:
No Windows:
python -m spotify2ytmusic gui
Linux ou Mac:
python3 -m spotify2ytmusic gui
O programa te levará para a aba de backup do Spotify, pedindo para você clicar no botão de backup das playlists. É um processo que pode demorar. A partir daí, tudo fica bem intuitivo com as opções disponíveis. Dá para carregar suas músicas curtidas, listar as playlists para encontrar uma específica que você quer migrar, migrar todas as playlists de uma vez ou copiar playlists específicas.
Como esse processo é mais amigável, vou voltar o foco para outras duas questões que acabei encontrando no meio desse processo, tratando nos passos a seguir.
- Erro 401: Unauthorized
Migrando as playlists pela interface gráfica, em algum momento você pode se deparar com o seguinte erro:
ERROR: (Retrying add_playlist_items: X) Server returned HTTP 401: Unauthorized.
A partir daí, nada mais funciona, mas tem um jeito de consertar. O erro de autorização pode acontecer porque as credenciais acabam mudando com o tempo, especialmente se você deixar o YoutubeMusic aberto no navegador enquanto usa o programa de migração de playlists. Mas calma!!!, não feche essa aba ainda, precisaremos utilizá-la outra vez.
Encerre a interface gráfica. Volte até o passo 3 desse tutorial e siga tudo de novo, exatamente como está lá, pegando um cabeçalho bruto outra vez, colando no arquivo de txt dentro da pasta do programa e gerando novas credenciais. Depois disso, feche a aba do navegador e execute o comando do passo 4 outra vez para reabrir a interface gráfica. Tente voltar a migrar as playlists. Se o problema voltar a acontecer, tente seguir os passos outra vez, mas a melhor maneira de evitar esse tipo de problema de novo é usando o terminal. Nem é tão complicado assim, te explico no ponto 6.
- Prefira a linha de comando
Usar o Spotify to YTMusic via terminal é uma delícia e funciona muito bem! Dá para fazer exatamente as mesmas coisas da interface gráfica de maneira igualmente simples.
- Fazendo backup das playlists do Spotify
No terminal, execute spotify2ytmusic/spotify_backup.py
. Ele vai te ajudar a autorizar o acesso à sua conta do Spotify.
Para salvar suas playlists e músicas curtidas no arquivo playlists.json
, use o seguinte comando:
python3 spotify_backup.py playlists.json --dump=liked,playlists --format=json
- Migrando as músicas curtidas
Comando: python -m spotify2ytmusic load_liked
Nota da documentação: Ele irá passar pelas suas músicas curtidas do Spotify e as curtirá também no YoutubeMusic. Durante o processo, o terminal exibirá a música curtida no Spotify e, logo abaixo, a música encontrada e curtida no YTMusic. Chequei minhas músicas e parece que ele está fazendo um bom trabalho de correspondência entre as músicas do Spotify e do YTMusic. Até agora, não vi uma única falha entre algumas milhares de músicas, mas podem acontecer erros com títulos mais esotéricos.
- Migrando álbuns curtidos
Comando: python -m spotify2ytmusic load_liked_albums
O Spotify armazena álbuns curtidos fora das playlists de músicas curtidas. Essa linha funciona para jogar as músicas de álbuns curtidos para a playlist de músicas curtidas do YTMusic.
- Listando suas playlists
Comando: python -m spotify2ytmusic list_playlists
Esse comando listará as playlists que você tem, tanto no Spotify quanto no YTMusic.
- Copiando suas playlists
Você pode tanto copiar todas as playlists de uma vez quanto fazer um trabalho mais pinçado e copiar apenas as playlists que desejar. Copiar todas as playlists usará o nome da playlists do Spotify como nome da playlist destino no YTMusic. Para copiar todas as playlists, rode o comando:
Comando: python -m spotify2ytmusic copy_all_playlists
Nota: Esse comando não copia a playlist de músicas curtidas (observe acima para isso).
Para copiar playlists individualmente, rode primeiro o comando de listar as playlists visto acima e ache o id da playlist (playlist id, a primeira coluna) do Spotify. Você também precisará do id da playlist destino do YTMusic para rodar o comando:
Comando: python -m spotify2ytmusic copy_playlist <ID_DA_PLAYLIST_DO_SPOTIFY> <ID_DA_PLAYLIST_DO_YTMUSIC>
Se você precisar criar uma playlist, rode o comando:
python -m spotify2ytmusic create_playlist "<NOME_DA_PLAYLIST>"
Outra opção é inserir o nome da playlist dentro do comando. Por exemplo:
python -m spotify2ytmusic copy_playlist <ID_DA_PLAYLIST_DO_SPOTIFY> "+Feeling Like a PUNK"
Executar outra vez os comandos para copiar playlists ou carregar músicas curtidas em eventos de falha deve ser uma alternativa segura, ou seja, não deve ocasionar entradas duplicadas nas playlists.