Spotify Desktop ottimizzato: build SpicyLyricTranslator + SpicyThemes (performance, DeepSeek fix, overlay stabile) e guida di installazione
  • PowerShell 100%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-04 00:18:31 +02:00
dist Fix: righe non tradotte (identità in cache e track-cache) + euristica lingua migliorata (tedesco) + tokenizer 'I' 2026-09-04 00:18:31 +02:00
docs Spotify ottimizzato: build SLT/ST + fix DeepSeek + fix flicker + guida installazione 2026-09-03 01:57:43 +02:00
patches Spotify ottimizzato: build SLT/ST + fix DeepSeek + fix flicker + guida installazione 2026-09-03 01:57:43 +02:00
scripts Spotify ottimizzato: build SLT/ST + fix DeepSeek + fix flicker + guida installazione 2026-09-03 01:57:43 +02:00
.gitignore Spotify ottimizzato: build SLT/ST + fix DeepSeek + fix flicker + guida installazione 2026-09-03 01:57:43 +02:00
README.md Spotify ottimizzato: build SLT/ST + fix DeepSeek + fix flicker + guida installazione 2026-09-03 01:57:43 +02:00

Spotify Optimizzato — Spicy Lyric Translator & Spicy Themes (build ottimizzate)

Questo repository contiene tutto il lavoro svolto per rendere Spotify Desktop (con Spicetify 2.44 + Spicy Lyrics) più leggero e stabile, mantenendo l'aspetto stock (nessun tema) e tutta la comunicazione coi server Spotify (login, playback, aggiornamenti, sync).

⚠️ Nessuna chiave API è inclusa: le impostazioni (incluse DeepSeek/Gemini) vivono nel localStorage di Spotify e non vanno mai pubblicate. Le istruzioni per inserirle sono sotto.


Contenuto

Dove Cosa
dist/spicy-lyric-translater.js Build finale ottimizzata del traduttore (bundle IIFE pronto)
dist/spicy-themes.js Build ottimizzata di Spicy Themes (opzionale — vedi sotto)
patches/slt-source-optimizations.patch Le modifiche sorgente del traduttore (vs upstream 7xeh/SpicyLyricTranslator)
patches/st-source-optimizations.patch Le modifiche sorgente di Spicy Themes (vs upstream 7xeh/SpicyThemes)
docs/performance-report.md Report misurazioni prima/dopo + diagnosi complete (flicker, DeepSeek, ecc.)
docs/troubleshooting.md Errori comuni e soluzioni rapide
scripts/install.ps1 Installazione/aggiornamento automatico (copia bundle + config)
scripts/measure.ps1 Misurazione CPU/RAM di Spotify (prima/dopo)

1. Spicy Lyric Translator (SLT) — le 3 cause di lag/freeze:

  • Loop rAF a 60fps ininterrotto → ora ~30fps, solo con musica in riproduzione, solo sulla riga attiva, idle in pausa (watchdog 500ms), stop totale se nulla da tradurre; target e blur cacheati (niente querySelectorAll per frame)
  • 4+ MutationObserver globali sul body → ridotti (niente attributes:class sul body, niente style nell'attributeFilter dell'observer riga attiva, debounce sui settings)
  • Cache su localStorage con JSON.parse/stringify per ogni riga → cache in memoria con flush debounced (una scrittura per traccia), probe di localStorage memoizzato
  • Fix DeepSeek (3 problemi scoperti dopo): il proxy cors-proxy.spicetify.app perdeva l'Authorization (401) → fetch diretto CORS (DeepSeek lo permette); URL senza /chat/completions → aggiunto automaticamente; modello reasoning risponde in reasoning_content con content vuoto → reasoning_effort: 'none' per modelli DeepSeek (output pulito, 10× meno token) + fallback parser su reasoning_content
  • Stabilità overlay (flicker): firma di render che include la presenza degli elementi, salvata a fine render; nessuna rimozione su versi momentaneamente staccati (Spicy Lyrics ricicla i nodi); righe "mancanti" ritentate al max ogni 45s

2. Spicy Themes (ST) — se vuoi solo "stock", NON installarlo (vedi sotto); le ottimizzazioni includono comunque: equalizzatore/word-tagger/music-video solo quando attivi (poll lento in pausa/background), blur-preview senza re-scan se nulla è cambiato, CSS re-iniettato una volta per frame durante i drag, salvataggio tema debounced.

3. Client Spotify (installazione):

  • Tema rimosso (current_theme vuoto → look stock), SpicyThemes non installato
  • Flag Chromium: --enable-features=UseEcoQoSForBackgroundProcess --disable-features=MediaEngagementSession,MediaEngagementWithExperimentalTeam --disable-logging
  • GPU preferenza Windows: Spotify.exe → GpuPreference=2 (RTX/NVIDIA, al prossimo avvio)
  • Risultati misurati: RAM −231 MB (−14%), il traduttore a costo ~0 durante il karaoke (il costo karaoke è di Spicy Lyrics, non di SLT)

Installazione (Windows + Spicetify 2.x)

Prerequisiti: Spotify Desktop, Spicetify CLI 2.x, Spicy Lyrics installato (via Marketplace o come estensione).

Automatica (consigliata)

# con Spotify CHIUSO
powershell -ExecutionPolicy Bypass -File scripts\install.ps1

Lo script: copia dist\spicy-lyric-translater.js in %APPDATA%\spicetify\Extensions\, aggiorna config-xpui.ini (extensions + current_theme vuoto), imposta i launch flags e chiama spicetify apply.

Manuale

  1. Chiudi Spotify (tray → Esci).
  2. Copia dist\spicy-lyric-translater.js → %APPDATA%\spicetify\Extensions\
  3. In %APPDATA%\spicetify\config-xpui.ini:
    • [Setting] current_theme = (vuoto) e spotify_launch_flags = --enable-features=UseEcoQoSForBackgroundProcess --disable-features=MediaEngagementSession,MediaEngagementWithExperimentalTeam --disable-logging
    • [AdditionalOptions] extensions = spicy-lyric-translater.js
  4. spicetify apply (Spotify chiuso) → apri Spotify.

Nota Marketplace: se SLT era installata via Marketplace (che scarica il codice da GitHub a runtime), disinstallarla da lì o rimuoverla dall'elenco marketplace:installed-extensions per evitare doppio caricamento.

Rebuild dalle patch (opzionale)

git clone https://github.com/7xeh/SpicyLyricTranslator && git apply patches\slt-source-optimizations.patch
cd SpicyLyricTranslator && npm install --cache <tuo-cache> && npm run build   # → dist/spicy-lyric-translater.js

(il build.js esegue tsc --noEmit + esbuild; test con npm test, 71/71 verdi)


Impostare la tua chiave DeepSeek (non è nella repo)

In Spotify → apri i lyrics → click destro sul bottone traduttore → Settings (o Marketplace), sezione Providers:

  • Custom API: URL https://api.deepseek.com, formato OpenAI Compatible, modello deepseek-v4-flash (o altro), chiave API sk-...
  • Scegli Custom API come provider principale
  • Oppure lascia Google (senza chiave) per i test

Per riportare la config da un backup precedente: le chiavi sono nel localStorage di Spotify (prefisso spicy-lyric-translator:), non nei file delle estensioni — non perdono mai i valori sostituendo i bundle.


Problemi noti & soluzioni

Sintomo Soluzione
"Non traduce più / nulla succede" Controlla nel console (Ctrl+Shift+I con devtools abilitato) l'errore; il caso noto era il proxy CORS → questa build usa fetch diretto. Verifica che preferred-api = custom e la key siano settate
"Parole non tradotte / testo sporco" Cache inquinata (traduzioni del periodo pre-fix): puliscila con localStorage.removeItem('spicy-lyric-translator:translation-cache'); Object.keys(localStorage).filter(k=>k.startsWith('slt-track-cache-')).forEach(k=>localStorage.removeItem(k)); (o Settings → Cached Lyrics → Clear All)
"La traduzione lampeggia" già risolto in questa build (vedi sopra); se ricapita, aggiorna il bundle
"Il karaoke pesa tantissimo" È il costo di Spicy Lyrics (gradiente testo a 60fps), non del traduttore: in Spicy Lyrics → Impostazioni → Simple Lyrics Mode riduce ~2-3×

Stato del progetto

  • Build: 71/71 test verdi, tsc pulito, bundle esbuild IIFE
  • Testato su: Spotify 1.2.79.411 (g33e8b03a), Spicetify 2.44.0, Windows 11, DeepSeek deepseek-v4-flash via Custom API
  • Licenza: il codice resta soggetto alla licenza degli upstream (7xeh); le modifiche qui sono documentate per riuso/patch