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.
L'input URL ora accetta anche query libere: se non sembra un link
(http/https/spotify:/dominio noto), il testo viene parsato come
{artist, name} e scaricato via download_playlist con una traccia.
Riusa lo stesso flusso ytsearch1: gia in uso per le tracklist da file.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aggiunto helper subprocess_flags() in core/paths.py che ritorna
CREATE_NO_WINDOW su Windows. Applicato a tutte le subprocess.run/Popen
in downloader, upgrader e recorder per evitare il flash di console nera
ad ogni traccia scaricata.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Aggiunto toggle Video/Solo audio nella tab Video. In modalita audio
yt-dlp scarica solo bestaudio ed estrae in MP3 al bitrate impostato
in Impostazioni (default 320 kbps), con embed thumbnail come la tab
Scarica.
- core/downloader.py: download_video() accetta audio_only e
audio_bitrate; quando True usa format 'bestaudio/best' e
--extract-audio --audio-format mp3
- api/bridge.py: start_video_download passa audio_only nel worker;
log mostra 'Solo audio MP3 320K' vs 'Video 1080p'
- webui: segmented control 'Video (MP4)' / 'Solo audio (MP3)' rosa,
selettore qualita nascosto in modalita audio, hint aggiornato
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- core/downloader.py: download_video() con format selector qualita
(best / 1080p / 720p / 480p), merge MP4, tracking .downloaded_videos
- api/bridge.py: start_video_download / stop_video_download / _video_worker.
Guard _any_job_running() per evitare concorrenza tra audio e video
(condividono lo stesso _stop_event)
- webui: nuova nav item, view con hero rosa (gradient pink->black),
selettore qualita, hint cookies per Instagram/Facebook privati
- CSS: palette pink, .hero-pink, .btn-pink, .progress-fill.pink,
componente .hint riusabile
- JS: handlers tab Video, canale bridge video:progress/video:done
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>