Files
musicdownload/README.md
T
luzadevandClaude Opus 4.7 8c06a26ddb Initial commit: MusicDownload con UI pywebview
- Frontend HTML/CSS/JS in webui/ (stile Spotify-like, hero gradient, modal blur)
- API bridge JS<->Python in api/bridge.py
- Core invariato: downloader yt-dlp, upgrader, spotify client, config
- Build scripts macOS (WebKit) e Windows (EdgeChromium)
- .gitignore esclude credenziali (config.json, cookies.txt) e artefatti build

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-30 12:48:58 +02:00

4.3 KiB

MusicDownload

Applicazione desktop per scaricare musica da Spotify, YouTube, SoundCloud e qualsiasi sorgente supportata da yt-dlp, con possibilita di migliorare la qualita audio dei file esistenti.

Sviluppata da LuZa.

Funzionalita

  • Download da Spotify — Incolla un link a playlist, album o brano singolo: l'app risolve i brani via API Spotify e li scarica da YouTube in MP3
  • Download diretto — Incolla un URL YouTube, SoundCloud o qualsiasi sorgente yt-dlp e scarica direttamente in MP3 (singoli video e playlist)
  • Upgrade qualita — Scansiona una cartella di file audio e riscarica quelli a bassa qualita da YouTube
  • Aggiornamento app — Controlla la disponibilita di nuove versioni direttamente dalle Impostazioni
  • Gestione impostazioni — Credenziali Spotify, bitrate, soglia HQ, percorsi, tema

Requisiti

  • Python 3.8+
  • yt-dlp installato nel sistema (brew install yt-dlp su macOS)
  • ffmpeg installato nel sistema (brew install ffmpeg su macOS)
  • Credenziali Spotify API (gratuite, vedi sotto) — necessarie solo per URL Spotify

Installazione

pip install -r requirements.txt

Dipendenze Python:

Pacchetto Utilizzo
customtkinter GUI moderna basata su Tkinter
requests Chiamate API Spotify
yt-dlp Download audio da YouTube
Pillow Gestione immagini (copertine)

Avvio

python3 main.py

Credenziali Spotify API

  1. Vai su https://developer.spotify.com/dashboard e accedi (anche account gratuito)
  2. Clicca Create app
  3. Compila: nome a piacere, Redirect URI http://localhost:8888/callback, seleziona Web API
  4. Nella pagina dell'app, clicca Settings
  5. Copia Client ID e Client Secret nelle Impostazioni dell'app

Le credenziali sono gratuite e non richiedono Spotify Premium.

Struttura progetto

MusicDownload/
├── main.py                  # Entry point
├── requirements.txt         # Dipendenze Python
├── build_macos.py           # Script build macOS (.app)
├── build_windows.py         # Script build Windows (.exe)
│
├── core/                    # Logica backend
│   ├── config.py            # Configurazione persistente (JSON)
│   ├── paths.py             # Ricerca binari (yt-dlp, ffmpeg)
│   ├── spotify_client.py    # Autenticazione e API Spotify
│   ├── downloader.py        # Download brani (Spotify via YouTube + URL diretti yt-dlp)
│   └── upgrader.py          # Upgrade qualita file esistenti
│
└── gui/                     # Interfaccia grafica
    ├── app.py               # Finestra principale con sidebar
    ├── download_tab.py      # Pagina download
    ├── upgrade_tab.py       # Pagina upgrade
    └── settings_tab.py      # Pagina impostazioni

Configurazione

Il file config.json viene creato automaticamente:

Chiave Default Descrizione
client_id "" Spotify Client ID
client_secret "" Spotify Client Secret
bitrate "320K" Bitrate download (128K/192K/256K/320K)
hq_threshold 310 Soglia kbps per considerare un file HQ
cookies_path "cookies.txt" Path al file cookies YouTube (opzionale)
output_dir "MUSICA/" Cartella output predefinita
theme "dark" Tema interfaccia (dark/light/system)

Posizione del file:

  • Sviluppo: directory del progetto
  • macOS bundle: ~/Library/Application Support/MusicDownload/
  • Windows bundle: %APPDATA%/MusicDownload/

Build

macOS

brew install ffmpeg
pip install pyinstaller
python3 build_macos.py

Produce dist/MusicDownload.app con yt-dlp, ffmpeg e ffprobe inclusi.

Windows

pip install pyinstaller
python build_windows.py

Produce dist/MusicDownload/MusicDownload.exe con tutti i binari inclusi.

Aggiornamento app

L'app verifica la disponibilita di nuove versioni tramite un file version.json remoto. Il formato atteso:

{
  "version": "v1.1",
  "download_url": "https://www.djluza.com/musicdownload/MusicDownload.dmg",
  "notes": "Descrizione delle novita"
}

L'URL di controllo e configurabile nella costante UPDATE_URL in gui/settings_tab.py.

Licenza

Uso personale.