GitHunt
AR

ArthurDS-tech/AlgoritimoSpotify

Emotify E² Engine (Emotional DNA Engine)

Motor de análise emocional profunda + sistema inteligente de recomendações baseado no histórico Spotify.

🎯 Características

Análise Emocional

  • 7 Emoções: Alegria, Euforia, Energia, Calma, Melancolia, Nostalgia, Introspecção
  • Análise Temporal: Evolução em múltiplas janelas (1h, 4h, 24h, 7d, 14d, 30d)
  • Detecção de Fases: Identifica mudanças significativas no estado emocional
  • Matriz de Transição: Padrões Markovianos de transição entre emoções
  • DNA Emocional: Perfil completo do usuário em JSON

Sistema de Recomendações Inteligente 🆕

  • 4 Modos de Recomendação:

    • MAINTAIN: Mantém emoção atual/dominante
    • TRANSITION: Transição suave entre emoções
    • EXPLORE: Explora emoções complementares
    • JOURNEY: Cria jornada emocional completa (ex: calma → euforia)
  • Integração Spotify API:

    • Usa top artists/tracks do usuário como seeds
    • Target features baseadas em valence/energy/danceability
    • Criação automática de playlists

🚀 Instalação

npm install

⚙️ Configuração

  1. Crie um app no Spotify Dashboard
  2. Configure .env:
SPOTIFY_CLIENT_ID=seu_client_id
SPOTIFY_CLIENT_SECRET=seu_secret
SPOTIFY_REDIRECT_URI=http://localhost:3000/callback

# Use 'memory' para desenvolvimento sem Redis/MongoDB
MONGODB_URI=memory
REDIS_URL=memory

PORT=3000

📡 API Endpoints

Autenticação

GET /login                    # Inicia autenticação OAuth
GET /callback                 # Callback do Spotify

Análise Emocional

POST /api/refresh/:userId     # Atualiza histórico (incremental)
GET  /api/analysis/:userId    # DNA emocional completo
     ?days=30                 # Período de análise

Recomendações 🆕

GET /api/recommendations/:userId
    ?emotion=euforia          # Emoção alvo (opcional)
    &mode=maintain            # maintain|transition|explore|journey
    &limit=20                 # Número de tracks

POST /api/playlist/:userId
     Body: {
       "name": "Minha Playlist Emocional",
       "emotion": "calma",
       "mode": "journey",
       "isPublic": true
     }

🧪 Testes

# Teste do algoritmo de análise
node test/testEngine.js

# Teste do sistema de recomendações
node test/testRecommendations.js

📊 Exemplo de Uso

1. Análise Emocional

// Atualiza histórico
POST /api/refresh/user123

// Busca DNA emocional
GET /api/analysis/user123?days=30

// Resposta:
{
  "overallDistribution": {
    "euforia": 0.50,
    "melancolia": 0.25,
    "calma": 0.125
  },
  "insights": [
    "Sua emoção dominante é euforia (50% do tempo)",
    "Mudança detectada: de melancolia para euforia"
  ]
}

2. Recomendações Inteligentes

// Mantém emoção atual
GET /api/recommendations/user123?mode=maintain

// Transição suave
GET /api/recommendations/user123?mode=transition&emotion=alegria

// Jornada emocional
GET /api/recommendations/user123?mode=journey&emotion=euforia

3. Criar Playlist Automática

POST /api/playlist/user123
{
  "name": "Jornada: Calma → Euforia",
  "emotion": "euforia",
  "mode": "journey"
}

// Resposta:
{
  "playlist": {
    "id": "playlist_id",
    "external_urls": { "spotify": "https://..." }
  },
  "tracksAdded": 30,
  "mode": "journey",
  "emotion": "euforia"
}

🏗️ Arquitetura

src/
├── auth/
│   └── SpotifyAuth.js         # OAuth PKCE
├── config/
│   ├── spotify.js             # Configurações API
│   └── emotions.js            # Regras de emoções
├── engine/
│   ├── E2Engine.js            # Orquestrador principal
│   ├── EmotionClassifier.js   # Classificação por track
│   ├── TemporalAnalyzer.js    # Análise temporal
│   └── RecommendationEngine.js # Sistema de recomendações 🆕
└── services/
    ├── SpotifyClient.js       # Cliente API Spotify
    ├── CacheService.js        # Cache Redis/Memory
    └── DatabaseService.js     # MongoDB/Memory

🎵 Como Funciona

Pipeline de Análise

  1. Coleta: recently_played com cursor incremental
  2. Features: Batch de até 100 IDs por request
  3. Classificação: Regras baseadas em valence/energy/danceability
  4. Temporal: Agregação em janelas + detecção de mudanças
  5. Insights: Padrões, transições, previsões

Sistema de Recomendações

  1. Análise do DNA: Identifica emoção dominante e padrões
  2. Target Features: Mapeia emoção → features Spotify
  3. Seeds Inteligentes: Usa top artists/tracks do usuário
  4. API Spotify: Chama /recommendations com parâmetros otimizados
  5. Modos Especiais:
    • Journey: Cria transição gradual em 4 etapas
    • Transition: Calcula features intermediárias
    • Explore: Sugere emoções complementares

🔧 Otimizações

  • Cache Inteligente: Audio features = 1 ano, tops = 24h
  • Updates Delta: Só processa tracks novas (cursor)
  • Batch Requests: Até 100 IDs por chamada
  • Fallback Memory: Funciona sem Redis/MongoDB
  • Rate Limit: Retry automático em 429

📈 Próximos Passos

  • Modelo ML (Random Forest/XGBoost) para classificação
  • LSTM para previsão temporal
  • Clustering de sessões (K-means)
  • Dashboard web com visualizações
  • Análise de lyrics com LLM
  • Recomendações contextuais (clima, localização)

📄 Licença

MIT

ArthurDS-tech/AlgoritimoSpotify | GitHunt