Uma ferramenta completa para transferir playlists do Spotify para YouTube Music, com interface gráfica intuitiva e sistema de renovação automática de credenciais.
- Transfira playlists completas do Spotify para YouTube Music
- Correspondência inteligente de músicas entre plataformas
- Sistema de pontuação para melhor precisão na busca
- Interface Gráfica (GUI): Interface moderna com Tkinter
- Sistema de Logs: Acompanhe o progresso em tempo real
- Configuração Visual: Configure APIs através da interface
- Script de Renovação: Renove credenciais do YouTube Music automaticamente
- Interface Web: Processo guiado para captura de credenciais
- Sem Interrupções: Mantenha suas transferências funcionando
- Python 3.8 ou superior
- Conta no Spotify
- Conta no YouTube Music/Google
git clone https://github.com/mayasrl/playlist-transfer-personalizado.git
cd playlist-transfer-personalizado# Criar ambiente virtual
python3 -m venv venv
# Ativar ambiente virtual
source venv/bin/activate # Linux/macOS
# ou
venv\\Scripts\\activate # Windows
# Instalar dependências
pip install -r requirements.txt- Acesse Spotify Developer Dashboard
- Clique em "Create an app"
- Preencha nome e descrição
- Copie Client ID e Client Secret
- Em "Edit Settings", adicione redirect URI:
http://localhost:8888/callback - Crie arquivo
.envna raiz do projeto:
SPOTIFY_CLIENT_ID=seu_client_id_aqui
SPOTIFY_CLIENT_SECRET=seu_client_secret_aqui
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback# Execute o script de configuração automática
python3 auto_renew_youtube.py
# Siga as instruções na interface web que será aberta
# As credenciais serão salvas automaticamente em config/youtube_oauth.json# Ativar ambiente virtual
source venv/bin/activate
# Executar interface gráfica
python gui/main_gui.py- Clique em "Configurar APIs" na interface
- Faça login no Spotify quando solicitado
- Verifique se ambos os serviços aparecem como "Configurado ✓"
- Visualize suas playlists: As playlists do Spotify aparecerão na lista à esquerda
- Selecione playlists: Escolha quais playlists deseja transferir
- Inicie a transferência: Clique em "Transferir →"
- Acompanhe o progresso: Veja o log de atividades em tempo real
- Verifique o resultado: As novas playlists aparecerão no YouTube Music
# Se as credenciais do YouTube Music expirarem
python3 auto_renew_youtube.py
# Siga as instruções na interface webplaylist-transfer-personalizado/
├── 📄 README.md # Este arquivo
├── 📄 LICENSE # Licença MIT
├── 📄 requirements.txt # Dependências Python
├── 📄 setup.py # Configuração de instalação
├── 📄 .gitignore # Arquivos ignorados pelo Git
├── 📄 .env # Variáveis de ambiente (criar)
├── 📄 auto_renew_youtube.py # Script de renovação automática
├── 📁 src/
│ └── 📁 playlist_transfer/
│ ├── 📄 __init__.py # Inicialização do módulo
│ ├── 📄 config.py # Configurações da aplicação
│ ├── 📄 spotify_client.py # Cliente da API do Spotify
│ ├── 📄 youtube_client.py # Cliente da API do YouTube Music
│ ├── 📄 playlist_manager.py # Lógica de transferência
│ └── 📄 cli.py # Interface de linha de comando
├── 📁 gui/
│ └── 📄 main_gui.py # Interface gráfica principal
├── 📁 config/ # Arquivos de configuração
│ └── 📄 youtube_oauth.json # Credenciais YouTube Music (auto-gerado)
├── 📁 tests/ # Testes unitários
├── 📁 examples/ # Exemplos de uso
├── 📁 docs/ # Documentação adicional
└── 📁 logs/ # Arquivos de log (auto-gerado)
| Tecnologia | Versão | Propósito |
|---|---|---|
| Python | 3.8+ | Linguagem principal |
| Spotipy | 2.25+ | Cliente oficial da API do Spotify |
| ytmusicapi | 1.11+ | Cliente não-oficial do YouTube Music |
| Tkinter | Built-in | Interface gráfica |
| Flask | 3.0+ | Servidor web para renovação de credenciais |
| Loguru | 0.7+ | Sistema de logging avançado |
O sistema utiliza um algoritmo inteligente para encontrar músicas correspondentes:
- Busca Primária:
"Artista Música" - Busca Alternativa:
"Música Artista" - Busca Exata:
"Artista" "Música" - Busca Simples:
"Música"
- Título correspondente: +60%
- Artista correspondente: +40%
- Duração similar: +20% (tolerância de 15s)
- Mínimo para aceitar: 40%
# Spotify API
SPOTIFY_CLIENT_ID=seu_client_id
SPOTIFY_CLIENT_SECRET=seu_client_secret
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback
# Configurações gerais
MAX_RETRIES=3
RETRY_DELAY=1.0
LOG_LEVEL=INFO- Limite de busca: 5 resultados por consulta
- Timeout de requisição: 30 segundos
- Retry automático: 3 tentativas
- Cache de sessão: Mantém login ativo
# Verifique se o arquivo .env existe e está correto
cat .env
# Execute a aplicação e configure via interface
python gui/main_gui.py# Execute o script de renovação
python3 auto_renew_youtube.py
# Siga as instruções na interface web
# As credenciais serão atualizadas automaticamente# Ative o ambiente virtual
source venv/bin/activate
# Instale as dependências
pip install -r requirements.txt- Nem todas as músicas estão disponíveis no YouTube Music
- Algumas podem ter nomes diferentes entre as plataformas
- O sistema tentará encontrar versões alternativas automaticamente
- Verifique o log para detalhes específicos
O sistema fornece relatórios detalhados:
- Taxa de sucesso: Percentual de músicas transferidas com sucesso
- Músicas encontradas: Lista de músicas transferidas com sucesso
- Músicas não encontradas: Lista de músicas que não puderam ser transferidas
- Score de correspondência: Precisão da busca para cada música
- Tempo de execução: Duração total da transferência
- Credenciais: Armazenadas localmente em arquivos de configuração
- Tokens: Renovados automaticamente quando necessário
- Logs: Não contêm informações sensíveis
# Credenciais e dados sensíveis
config/youtube_oauth.json
.env
.cache-*
# Python
*.pyc
__pycache__/
*.pyo
*.pyd
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
# Ambiente virtual
venv/
env/
ENV/
# Logs
*.log
logs/
# IDE
.vscode/
.idea/
*.swp
*.swo- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
- Mantenha o código limpo e bem documentado
- Adicione testes para novas funcionalidades
- Siga as convenções de nomenclatura do Python (PEP 8)
- Atualize a documentação quando necessário
- ✨ Interface gráfica completa com Tkinter
- 🔄 Transferência Spotify → YouTube Music
- 🎯 Correspondência inteligente de músicas
- 📊 Relatórios detalhados de transferência
- 🔄 Sistema de renovação automática de credenciais
- 🌐 Interface web para configuração do YouTube Music
- 📝 Documentação completa
- API não-oficial: YouTube Music usa API não-oficial que pode quebrar
- Rate Limiting: Ambas as APIs têm limites de requisições por minuto
- Correspondência imperfeita: Nem sempre encontra a música exata
- Disponibilidade regional: Algumas músicas podem não estar disponíveis em certas regiões
- Credenciais temporárias: YouTube Music requer renovação periódica de credenciais
- Transferência média: 30-50 músicas por minuto
- Uso de memória: ~30MB para playlists de 500+ músicas
- Correspondência: ~85% de taxa de sucesso para músicas populares
- Tempo de busca: ~2-3 segundos por música
Feito com 💛 por @mayasrl