- PowerShell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| dist | ||
| docs | ||
| patches | ||
| scripts | ||
| .gitignore | ||
| README.md | ||
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) |
Cosa è stato ottimizzato (riepilogo)
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
querySelectorAllper frame) - 4+ MutationObserver globali sul body → ridotti (niente
attributes:classsul body, nientestylenell'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
localStoragememoizzato - Fix DeepSeek (3 problemi scoperti dopo): il proxy
cors-proxy.spicetify.appperdeva l'Authorization (401) → fetch diretto CORS (DeepSeek lo permette); URL senza/chat/completions→ aggiunto automaticamente; modello reasoning risponde inreasoning_contentconcontentvuoto →reasoning_effort: 'none'per modelli DeepSeek (output pulito, 10× meno token) + fallback parser sureasoning_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_themevuoto → 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
- Chiudi Spotify (tray → Esci).
- Copia
dist\spicy-lyric-translater.js→%APPDATA%\spicetify\Extensions\ - In
%APPDATA%\spicetify\config-xpui.ini:[Setting] current_theme =(vuoto) espotify_launch_flags = --enable-features=UseEcoQoSForBackgroundProcess --disable-features=MediaEngagementSession,MediaEngagementWithExperimentalTeam --disable-logging[AdditionalOptions] extensions = spicy-lyric-translater.js
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-extensionsper 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, formatoOpenAI Compatible, modellodeepseek-v4-flash(o altro), chiave APIsk-... - 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,
tscpulito, bundle esbuild IIFE - Testato su: Spotify 1.2.79.411 (g33e8b03a), Spicetify 2.44.0, Windows 11, DeepSeek
deepseek-v4-flashvia Custom API - Licenza: il codice resta soggetto alla licenza degli upstream (
7xeh); le modifiche qui sono documentate per riuso/patch