Generatore di guida TV PDF (a4) ad alta leggibilità .
Opzioni predefinite:
uv run main.pyQuesto comando scarica il palinsesto per i prossimi 7 giorni (a partire da domani) nella fascia oraria 10:00 - 22:00 e genera il file guida_tv.pdf.
È possibile passare i seguenti parametri alla riga di comando:
uv run main.py [opzioni]--days N: Numero di giorni da generare (default:7).--start-date AAAA-MM-GG: Data di inizio della guida (default: domani).--start-hour ORA: Ora locale di inizio della fascia oraria giornaliera (default:10).--end-hour ORA: Ora locale di fine della fascia oraria giornaliera (default:22).--output FILE.pdf: Nome del file PDF generato (default:guida_tv.pdf).--no-desc: Rimuove le brevi trame/descrizioni dei programmi per ottenere un PDF estremamente compatto.--font-size PT: Dimensione del font per i titoli dei programmi e per le relative descrizioni (default:10.0).
Il processo di generazione si divide nelle seguenti fasi:
- Scaricamento in parallelo (EPG): Lo script interroga le API pubbliche e non protette di Sky Italia:
Per velocizzare il processo, lo script esegue le richieste HTTP per ciascun canale in parallelo tramite un
https://apid.sky.it/gtv/v1/events?from={start_str}&to={end_str}&pageSize=999&pageNum=0&env=DTH&channels={ch_id}ThreadPoolExecutor(fino a 8 connessioni simultanee), completando il download di una settimana di palinsesto per i canali configurati in circa 1-2 secondi. - Conversione di Fuso Orario: Le API di Sky restituiscono gli orari in formato UTC (es.
2026-06-06T20:30:00Z). Lo script converte queste date nel fuso orario italiano (Europe/Rome), gestendo in automatico l'ora solare e l'ora legale (CEST/CET). - Gestione della Giornata TV: Per evitare che i programmi in tarda serata vengano spezzati a mezzanotte, lo script considera la giornata televisiva a partire dalle
05:00del mattino fino alle04:59del giorno successivo. Qualsiasi programma che inizia tra la mezzanotte e le 04:59 viene accorpato alla serata del giorno televisivo precedente. - Formattazione Typst: I programmi raccolti vengono puliti (rimozione duplicati consecutivi, formattazione titoli ed escape dei caratteri speciali per Typst) e inseriti in un template Typst generato in memoria.
- Compilazione PDF: Il codice Typst viene salvato in un file temporaneo (
guida.typ) e compilato in PDF. Al termine, il file temporaneo viene eliminato.
Tutti i canali inclusi nella guida sono definiti all'inizio di main.py nella lista CANALI.
Ciascun canale è rappresentato da un dizionario Python con i seguenti campi:
{"id": "899", "name": "Rai 1", "color": "rgb(\"#1a3a5f\")"}id: L'identificativo numerico del canale (stringa).name: Il nome visualizzato come intestazione sul PDF.color: Il colore associato all'intestazione della scheda (in formato Typstrgb(...)o colore predefinito).
Tutti i canali disponibili sul database di Sky Italia (che comprende quasi tutti i canali nazionali in chiaro del digitale terrestre, oltre ai canali satellitari e Sky Sport) possono essere consultati richiamando l'endpoint della loro API ufficiale:
https://apid.sky.it/gtv/v1/channels?env=DTH
Questo endpoint restituisce un array JSON contenente l'elenco completo di canali. Per ciascun canale vengono fornite informazioni quali:
{
"id": 12116,
"name": "NOVE HD",
"number": 149,
"servicekey": "1009"
}- Aprire il link sopra nel browser.
- Cercare il canale desiderato per nome (es.
"NOVE HD"). - Copiare il valore del campo
"id"(nell'esempio sopra12116). - Aggiungere una nuova riga alla lista
CANALIinmain.pyinserendo tale ID, il nome desiderato per la stampa e un colore a scelta.