Vai al contenuto
SIMONE PIZZI
Progetti ↗
Runtime FeedDownloader Pro

FeedDownloader 1.6: il guardiano che dava l’allarme per tutto

Dopo Titan, Claude Opus 5.5 ha letto anche FeedDownloader: cinque difetti gravi, il filtro per periodo che c’era ma non si vedeva, le funzioni da archivista e un’interfaccia viola rifatta da capo.

Data
Lettura
7 minuti
Sezioni
6
Copertina: FeedDownloader 1.6: il guardiano che dava l’allarme per tutto

Quattro giorni fa ho raccontato che Titan funzionava, finché non l’ha letto Opus 5.5. Lo stesso trattamento è toccato all’altro programma che tengo in piedi per Runtime Radio, Runtime FeedDownloader Pro: quello che scarica e conserva interi archivi di podcast.

Dal 19 agosto non l’avevo più toccato. Ad agosto era diventato software libero, l’aggiornamento automatico aveva retto la prova sul campo, e io avevo smesso di guardarci dentro. Il 23 ottobre è uscita la 1.6.0, scritta con Claude Opus 5.5: cinque difetti gravi, diciannove medi, dieci lievi, un’interfaccia rifatta da capo e un gruppo di funzioni nuove pensate per chi archivia.

La schermata d’ingresso di FeedDownloader 1.6.0: il logo viola dentro un’orbita, il titolo Runtime FeedDownloader Pro, il sottotitolo Archivio di podcast, la scelta della lingua e il pulsante Entra in FeedDownloader
La schermata d’ingresso nuova, con la stessa coreografia di Titan, in viola.

Si poteva già, ma non si capiva

Tutto è partito da una domanda mia, insieme alla richiesta di una revisione completa: si può scaricare un podcast «dal giorno X al giorno Y»?

Si poteva. Il filtro per data c’era, solo che stava dietro un pulsante a scomparsa, e il comando per scaricare diceva «Scarica tutto». Chi filtrava un anno e premeva quel pulsante scaricava davvero solo l’anno filtrato, ma per arrivarci bisognava fidarsi di un’etichetta che diceva il contrario. Se lo chiedevo io, che il programma l’ho fatto, non poteva capirlo nessun altro.

La vista di un feed nella versione 1.5: in alto a destra i pulsanti Filtro Data, Durata e Ordina, sopra il pulsante Scarica tutto
Prima: la 1.5, con la mia libreria vera. Il periodo si sceglieva da «Filtro Data», e il pulsante sopra diceva «Scarica tutto».

Nella 1.6 la fascia dei filtri è sempre aperta e ha il Periodo: gli ultimi 30 o 90 giorni, gli ultimi dodici mesi, quest’anno, l’anno scorso, oppure due date scelte a mano. Il pulsante dice che cosa farà, «Scarica i 22 filtrati», e il pannello a destra aggiorna il conto e lo spazio stimato a ogni filtro che cambi.

La vista di un feed nella 1.6.0: il periodo L’anno scorso con le date dal 1 gennaio al 31 dicembre 2025, il pulsante Scarica i 22 filtrati e il pannello Che cosa scaricherà con 22 episodi e circa 1,5 GB
Dopo: l’anno scorso di un podcast settimanale, 22 episodi, circa un gigabyte e mezzo. I dati sono finti, presi dal banco di prova dell’interfaccia.

Prima di partire, una conferma riepiloga periodo, spazio stimato, spazio libero sul disco e cartella di destinazione.

La finestra Scaricare 22 episodi? con il periodo, lo spazio stimato di circa 1,5 GB, lo spazio libero di 412 GB e la cartella D:\Podcast
La conferma, prima che parta qualunque download.

Il guardiano che dava l’allarme per tutto

A maggio avevo raccontato di aver costruito una cassaforte e poi provato a scassinarla. Una delle serrature era l’impronta SHA-256: a ogni download FeedDownloader calcola l’impronta del file e la registra, e la Verifica dell’archivio la ricalcola per accorgersi se un file si è guastato sul disco.

Il difetto più grave stava proprio lì. Chi aveva acceso i tag ID3, cioè titolo, autore e copertina scritti dentro il file MP3, si ritrovava con un archivio in cui ogni episodio risultava «corrotto». L’impronta veniva registrata un attimo prima che i tag riscrivessero il file: la Verifica confrontava il file finito con la fotografia di un file che non esisteva più, e il ritrovamento dei file spostati, che si basa sulla stessa impronta, non trovava niente. Adesso l’ordine è quello giusto, prima i tag e poi l’impronta, e per i file già colpiti c’è Accetta i file attuali come riferimento.

Gli altri quattro gravi hanno lo stesso sapore.

  • La scrittura dei tag cancellava quelli dell’editore, compresi capitoli e copertina originale, e bloccava l’interfaccia mentre rileggeva e riscriveva l’intero file.
  • L’archivio era legato alla cartella corrente. Bastava cambiare la cartella di download nelle Impostazioni perché l’intera libreria risultasse «mancante», con l’invito a segnarla da riscaricare. Ora ogni episodio ricorda dove sta, e cambiando cartella il programma chiede se spostare l’archivio o usare la cartella nuova solo per i prossimi download.
  • Senza rete, l’avviso diceva «download in pausa», ma nessuno li fermava. Un calo di linea trasformava un lotto intero in una fila di errori nel giro di un minuto. Adesso la coda si ferma da sola e riparte dal punto in cui era quando torna la connessione.
  • I download avviati da un singolo episodio erano invisibili: il pannello compariva solo per i lotti, e quel download non si poteva né fermare né mettere in pausa.
La finestra Che cosa fare dell’archivio esistente? con i pulsanti Annulla, Solo per i nuovi download e Sposta l’archivio
Cambiare cartella non fa più sparire l’archivio: si sceglie che cosa farne.

E poi diciannove medi

Nessuno, da solo, rompeva il programma. Messi in fila descrivono un’app che andava benissimo finché non le chiedevi qualcosa di insolito. La coda si perdeva a ogni chiusura. «Sincronizza» accodava tutti gli episodi mancanti di un feed senza chiedere niente. Un file M4A senza estensione nell’indirizzo diventava un .mp3. Il limite di banda valeva per ogni singolo file, così tre download a 500 KB/s ne facevano 1,5 MB/s. La playlist M3U era ordinata per il testo della data, cioè in pratica per giorno della settimana. Nelle versioni installate restava il menu di Electron, e un Ctrl+R distratto ricaricava l’interfaccia a metà download.

Uno riguarda la riservatezza: i caratteri dell’interfaccia arrivavano da Google Fonts a ogni avvio, una richiesta di rete e un indirizzo IP consegnato a terzi per disegnare delle lettere. Adesso sono dentro il programma. L’elenco completo, voce per voce, sta nel changelog della 1.6.0.

La vista Download della 1.6.0: a sinistra la coda con due episodi in corso e quattordici in attesa, a destra i download non riusciti e i sei completati
La vista Download, sempre raggiungibile: la coda a sinistra, gli esiti a destra, e in alto il conto di che cosa sta scaricando.

Un programma da archivista

FeedDownloader non è un lettore di podcast e non vuole diventarlo. Serve a chi un archivio lo vuole tenere tutto, su un disco o su un NAS, e la 1.6 aggiunge le funzioni che a quel lavoro mancavano.

L’archivio automatico si accende feed per feed: quando un controllo trova episodi nuovi, li scarica senza chiedere. La coda sopravvive alla chiusura e a un blocco del programma, e al riavvio propone di riprendere. Accanto a ogni file si possono salvare i metadati dell’episodio, con note, numerazione e impronta, e per ogni podcast un podcast.json con la copertina. Il modello dei nomi dei file accetta anche stagione ed episodio.

La Verifica ora ha due modi. La rapida controlla che ogni file ci sia e abbia la dimensione giusta, e dura pochi secondi. La completa ricalcola tutte le impronte: su un NAS può volerci molto, e per questo adesso ha l’avanzamento e un pulsante per fermarla, cosa che prima non aveva.

La finestra Verifica dell’archivio in modalità Completa, con la barra di avanzamento a 80 episodi su 192 e il pulsante Ferma la verifica
La Verifica completa al lavoro, con l’avanzamento e il modo di fermarla.

La schermata iniziale è diventata la Libreria: una tabella di tutti i feed con gli episodi, quanti sono archiviati, quanti mancano, lo spazio occupato e l’ultimo controllo, ordinabile per colonna.

La Libreria della 1.6.0: la tabella dei cinque feed con episodi, archiviati, da scaricare, spazio e ultimo controllo, e a destra la coda dei download, l’archivio e le scorciatoie da tastiera
La Libreria: tutto l’archivio in una tabella, e un clic su una riga apre il feed.

Viola, e in orizzontale

L’interfaccia è gemella di quella di Titan, nella catena viola del marchio di FeedDownloader invece che in blu. Ogni coppia di colori, cinquantanove in tutto, è controllata da uno script contro le soglie WCAG 2.2 AA, nessun testo scende sotto i 12 pixel e tutto si ingrandisce dall’80 al 180 per cento.

Su un punto ho dovuto insistere più di una volta. FeedDownloader è un programma da scrivania, e lo schermo di un computer è largo: i pannelli stanno affiancati, ognuno con il proprio scorrimento, invece di impilarsi uno sotto l’altro come in una pagina web vista dal telefono. Le prime viste della 1.6 erano nate impilate, e le ho fatte rifare.

Quello che resta

Come per Titan, il conto si può fare. I test automatici sono passati da 394 a 440, e le correzioni sono state provate nell’app vera, con un profilo separato e un podcast pubblico, senza toccare la mia libreria: periodo, pausa e ripresa, stacco della rete, chiusura con la coda piena, cambio di cartella.

A maggio scrivevo che una cassaforte si giudica dalla serratura. Stavolta la serratura teneva, ma il guardiano che doveva controllarla dava l’allarme per tutto, e la chiave stava appesa a una cartella che bastava spostare.

FeedDownloader resta gratuito e sotto licenza MIT, per Windows e Linux. Si scarica dalla pagina su Ecosystem oppure dalle release su GitHub.

Ogni tanto scrivo una lettera

Nessuna cadenza fissa, nessun riassunto automatico: parte solo quando ho qualcosa da raccontare. In fondo a ognuna c'è il link per uscire.

↑ Su

Cerca nel sito

Condividi

L'indirizzo di questa pagina:

Scrivi a Simone

Segnalazioni, correzioni, o solo per dire che una cosa non funziona: quest'ultima è la più utile di tutte.