luciano
784b56682f
traxsource: _discover_top100_url + _parse_tracks con BeautifulSoup
2026-08-01 11:59:55 +02:00
luciano
e1e629f8a2
traxsource: helper _split_title_mix + _format_artists + _large_cover + eccezioni
2026-08-01 11:57:42 +02:00
luciano
a95912f78c
traxsource: GENRES + TraxsourceTrack + list_genres
2026-08-01 11:55:30 +02:00
luciano
7feda99720
traxsource: fixture HTML + bs4 dep + script refresh generi
2026-08-01 11:54:55 +02:00
luciano
191c245fc1
plan: implementation Traxsource charts v1.9.0
2026-08-01 11:50:44 +02:00
luciano
98235625ba
spec: feature Traxsource charts (v1.9.0 target)
2026-08-01 11:47:32 +02:00
luciano
72e700c85d
config: bump VERSION v1.8.6
v1.8.6
2026-07-21 17:51:22 +02:00
luciano
a774906814
ui: ConvertUI (file picker, opzioni, batch conversione)
2026-07-21 17:48:31 +02:00
luciano
9f41f9d302
ui: markup tab Converti
2026-07-21 17:47:16 +02:00
luciano
b0cd046375
bridge: 4 metodi Api per convertitore WAV -> MP3
2026-07-21 17:44:59 +02:00
luciano
5fc9f8ac2b
converter: modulo ffmpeg WAV -> MP3 con VBR/CBR + stop
2026-07-21 17:44:36 +02:00
luciano
c4e6d6e322
fix: bundle certifi CA per SSL su Windows/macOS + bump v1.8.5
...
- requirements.txt: certifi come dep esplicita
- main.py: setta SSL_CERT_FILE/REQUESTS_CA_BUNDLE su certifi.where() al boot
- build_windows.py + build_macos.py: --collect-data certifi nel PyInstaller
Bugfix: senza certifi bundlato, le chiamate HTTPS dal build Windows
falliscono con CERTIFICATE_VERIFY_FAILED (attivazione licenza impossibile).
v1.8.5
2026-07-17 16:26:16 +02:00
luciano
c7dfe95890
config: bump VERSION v1.8.4
v1.8.4
2026-07-15 13:04:06 +02:00
luciano
25b646d754
bridge: metadata pipeline per tag ID3 su download search
2026-07-15 13:00:19 +02:00
luciano
73b4480890
downloader: param output_filenames + post_download_callback
2026-07-15 12:56:56 +02:00
luciano
d53b8f20ed
spotify: get_artist_genres + enrich_from_youtube_title + cover_url_large
2026-07-15 12:54:59 +02:00
luciano
0f7cd24703
tagger: modulo mutagen per ID3 tag + cover art da URL
2026-07-15 12:54:26 +02:00
luciano
f1437e8e24
config: bump VERSION v1.8.3
v1.8.3
2026-07-15 11:46:50 +02:00
luciano
acbd9c0b1f
ui: hero sticky in cima al pannello scrollabile di ogni tab
2026-07-15 11:45:43 +02:00
luciano
f226c3fa8e
ui: cover art in Beatport, Spotify e YouTube search
...
- core/beatport.py: BeatportTrack.image_url estratto da image.dynamic_uri (95x95)
- core/spotify_client.py: _track_to_dict include image_url (Spotify torna 3 taglie,
prendo la ~64px). search_artist_discography inietta album.images anche negli
album-tracks per la cover
- core/youtube_search.py: image_url = i.ytimg.com/vi/<id>/mqdefault.jpg
- webui/index.html: nuova <th class="col-cover"></th> nelle 3 tabelle
- webui/js/app.js: 3 renderTable inseriscono <td class="col-cover"><img>
con loading=lazy, referrerpolicy=no-referrer e onerror fallback
- webui/css/style.css: .beatport-table .col-cover img { 40x40, border-radius 4px,
object-fit: cover, bg fallback var(--bg-input) }
2026-07-15 11:45:28 +02:00
luciano
85f7ec0993
config: bump VERSION v1.8.2
v1.8.2
2026-07-14 22:15:02 +02:00
luciano
9dbdd74b2f
ui: fix light mode — colori brand come testo + hover/focus adattivi
...
- Introdotte varianti --*-text (green/blue/purple/pink/amber/indigo/rec-red)
scure in light mode per contrasto AA su bg bianco
- Convertite le rule che usano brand colors come foreground (log, badge,
quota, footer, percent, info-row, update-status, save-status, toast,
beatport-status, colonna "già scaricato")
- Nav-item hover da #1A1A1A hardcoded → var(--bg-card-2)
- Input focus da #333 hardcoded → var(--bg-input-hover)
- Scrollbar thumb da #404040/#606060 hardcoded → var(--text-3)/var(--text-2)
- .hint code bg da rgba(255,255,255,0.08) → var(--bg-input)
- Table hover da rgba(99,102,241,0.06) → var(--bg-input) (visibile in light)
- .log .l-warn da #FDCB6E hardcoded → var(--amber-text)
2026-07-14 22:12:50 +02:00
luciano
8c73651312
Merge feat/music-search: MusicTools v1.8.1
...
Nuove tab Spotify e YouTube per cercare brani per titolo/artista.
Spotify con toggle "Solo artista" per scaricare tutta la discografia.
YouTube per mix DJ, unreleased, bootleg via yt-dlp ytsearch.
40 test verdi. Testato end-to-end in dev su macOS.
v1.8.1
2026-07-14 17:34:22 +02:00
luciano
1fa49fabc4
ui: SpotifyUI + YoutubeUI (search, table, download, log)
2026-07-14 17:31:48 +02:00
luciano
83c47df29c
ui: markup tab Spotify + YouTube search
2026-07-14 17:31:41 +02:00
luciano
9ea14eb81c
bridge: 6 metodi Api per music search (Spotify + YouTube)
2026-07-14 17:25:58 +02:00
luciano
91cfc173d4
config: v1.8.1 + 3 campi DEFAULTS per music search
2026-07-14 17:23:49 +02:00
luciano
67e48e54f7
downloader+bridge: supporto download da URL diretti (YouTube search flow)
...
Aggiunge download_urls() in core/downloader.py che scarica direttamente da
URL YouTube gia noti (bypassa lo step di ricerca). Usa gli stessi flag di
download_playlist (mp3, embed thumbnail/metadata, output template, cookies,
ffmpeg location) e il parsing progress via stdout.
In api/bridge.py aggiunge start_urls_download() e _urls_worker() speculari a
start_tracks_download/_tracks_worker. Consumati dal tab "YouTube Search"
dopo che l'utente ha selezionato i risultati.
2026-07-14 17:22:46 +02:00
luciano
0949df031a
youtube: search_youtube via yt-dlp ytsearchN + parse JSON
2026-07-14 17:18:54 +02:00
luciano
2771fa8075
spotify: search_artist_discography con dedupe top-tracks+album
2026-07-14 17:16:19 +02:00
luciano
252d76b907
spotify: search_tracks() free-form con limit configurabile
2026-07-14 17:14:02 +02:00
luciano
58d4896ffe
plan: implementation Music Search (Spotify + YouTube) v1.8.1
2026-07-14 17:11:13 +02:00
luciano
91aa1bd6a3
spec: feature Music Search (Spotify + YouTube tabs) v1.8.1
2026-07-14 17:05:56 +02:00
luciano
48a6e15c7a
Merge feat/beatport-charts: MusicTools v1.8.0
...
Nuova tab Beatport per scaricare le Top 100 per genere direttamente
dal sito Beatport (bypass Cloudflare via curl_cffi + TLS impersonation).
Riusa il downloader esistente YouTube via yt-dlp.
25 unit test verdi. Testato end-to-end in dev su macOS.
v1.8.0
2026-07-14 16:48:36 +02:00
luciano
f850e86a88
docs: implementation plan Beatport charts
2026-07-14 16:42:27 +02:00
luciano
6bff24ff7d
beatport: fix check_existing/download path mismatch
...
start_tracks_download sanitizza gli slash del subfolder (/ -> _), quindi
i file finivano in Beatport_<genre>/ ma check_existing cercava in
Beatport/<genre>/. Estratto helper _beatport_output_dir per allinearli.
2026-07-14 16:41:38 +02:00
luciano
faf74dfb11
ui: stili tab Beatport
2026-07-14 16:39:36 +02:00
luciano
d2f3ebe361
ui: JS BeatportUI (init, loadChart, download, log)
2026-07-14 16:39:04 +02:00
luciano
33c6bc7703
ui: markup tab Beatport
2026-07-14 16:37:44 +02:00
luciano
be4f7e1024
bridge: 4 metodi Api per feature Beatport (fetch + download riusa start_tracks_download)
2026-07-14 16:30:49 +02:00
luciano
1c52d52986
config: v1.8.0 + beatport_last_genre nei DEFAULTS
2026-07-14 16:27:22 +02:00
luciano
cc5716e87d
spotify: aggiunto search_track() per feature Beatport
2026-07-14 16:26:25 +02:00
luciano
3f31e240be
beatport: fetch_top100 con curl_cffi + retry + cache 15min
2026-07-14 16:24:43 +02:00
luciano
13c8e60712
beatport: parse JSON → list[BeatportTrack]
2026-07-14 16:22:21 +02:00
luciano
f1e57905c1
beatport: estrazione __NEXT_DATA__ + eccezioni tipizzate
2026-07-14 16:20:21 +02:00
luciano
4221a5992b
beatport: BeatportTrack dataclass con display + spotify_query
2026-07-14 16:18:38 +02:00
luciano
70cdfe8983
beatport: GENRES + list_genres() con test
2026-07-14 16:17:09 +02:00
luciano
e1aaa83fe9
beatport: fixture HTML + curl_cffi + script refresh generi
2026-07-14 16:14:55 +02:00
luciano
c037da4901
test: setup pytest infra per feature Beatport
2026-07-14 16:03:33 +02:00
luciano
21ef3a5699
spec: feature Beatport charts (v1.8.0 target)
...
Design approvato via brainstorming: nuova tab per caricare le Top 100
Beatport per genere e scaricare i brani selezionati riusando il flusso
Spotify search -> yt-dlp. Approccio dati: parse __NEXT_DATA__ JSON dalle
pagine Beatport, no scraping fragile, no API interna.
2026-07-14 15:50:48 +02:00