Skip to content

mayasrl/playlist-transfer

Repository files navigation

Playlist Transfer Tool

Python Version License: MIT Platform

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.

✨ Funcionalidades

🔄 Transferência Inteligente

  • 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 Amigável

  • 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

🔄 Renovação Automática

  • 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

🚀 Instalação Rápida

Pré-requisitos

  • Python 3.8 ou superior
  • Conta no Spotify
  • Conta no YouTube Music/Google

1. Clone o Repositório

git clone https://github.com/mayasrl/playlist-transfer-personalizado.git
cd playlist-transfer-personalizado

2. Configure o Ambiente Virtual

# 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

3. Configure as APIs

Spotify API

  1. Acesse Spotify Developer Dashboard
  2. Clique em "Create an app"
  3. Preencha nome e descrição
  4. Copie Client ID e Client Secret
  5. Em "Edit Settings", adicione redirect URI: http://localhost:8888/callback
  6. Crie arquivo .env na raiz do projeto:
SPOTIFY_CLIENT_ID=seu_client_id_aqui
SPOTIFY_CLIENT_SECRET=seu_client_secret_aqui
SPOTIFY_REDIRECT_URI=http://localhost:8888/callback

YouTube Music API

# 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

🎮 Como Usar

1. Executar a Aplicação

# Ativar ambiente virtual
source venv/bin/activate

# Executar interface gráfica
python gui/main_gui.py

2. Configurar APIs (se necessário)

  • Clique em "Configurar APIs" na interface
  • Faça login no Spotify quando solicitado
  • Verifique se ambos os serviços aparecem como "Configurado ✓"

3. Transferir Playlists

  1. Visualize suas playlists: As playlists do Spotify aparecerão na lista à esquerda
  2. Selecione playlists: Escolha quais playlists deseja transferir
  3. Inicie a transferência: Clique em "Transferir →"
  4. Acompanhe o progresso: Veja o log de atividades em tempo real
  5. Verifique o resultado: As novas playlists aparecerão no YouTube Music

4. Renovar Credenciais (quando necessário)

# Se as credenciais do YouTube Music expirarem
python3 auto_renew_youtube.py

# Siga as instruções na interface web

📁 Estrutura do Projeto

playlist-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)

🛠️ Tecnologias Utilizadas

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

📊 Algoritmo de Correspondência

O sistema utiliza um algoritmo inteligente para encontrar músicas correspondentes:

Estratégias de Busca

  1. Busca Primária: "Artista Música"
  2. Busca Alternativa: "Música Artista"
  3. Busca Exata: "Artista" "Música"
  4. Busca Simples: "Música"

Sistema de Pontuação

  • Título correspondente: +60%
  • Artista correspondente: +40%
  • Duração similar: +20% (tolerância de 15s)
  • Mínimo para aceitar: 40%

🔧 Configuração Avançada

Arquivo .env

# 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

Configurações do Sistema

  • 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

🐛 Solução de Problemas

Erro: "Credenciais do Spotify não configuradas"

# Verifique se o arquivo .env existe e está correto
cat .env

# Execute a aplicação e configure via interface
python gui/main_gui.py

Erro: "YouTube Music não autenticado" / HTTP 401

# Execute o script de renovação
python3 auto_renew_youtube.py

# Siga as instruções na interface web
# As credenciais serão atualizadas automaticamente

Erro: "No module named 'spotipy'"

# Ative o ambiente virtual
source venv/bin/activate

# Instale as dependências
pip install -r requirements.txt

Músicas não encontradas

  • 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

📈 Estatísticas de Transferência

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

🔒 Segurança e Privacidade

Dados Sensíveis

  • Credenciais: Armazenadas localmente em arquivos de configuração
  • Tokens: Renovados automaticamente quando necessário
  • Logs: Não contêm informações sensíveis

Arquivos a NÃO incluir no Git

# 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

🤝 Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Diretrizes de Contribuição

  • 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

📝 Changelog

v1.0.0 (2025-01-01)

  • ✨ 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

⚠️ Limitações

  • 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

⚡ Performance

  • 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

About

Ferramenta para transferir playlists do Spotify para YouTube Music

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages