Come automatizzare gli elenchi di link: il catalogo awesome-zhuiju-free
Le raccolte di link su GitHub tipicamente hanno la stessa sorte. L'autore raccoglie un centinaio di siti utili, ottiene un paio di migliaia di stelle, abbandona il repository dopo sei mesi, e metà dei link diventano 404. Il repository awesome-zhuiju-free risolve questo problema attraverso l'ingegneria.
A prima vista, questo sembra essere un catalogo di risorse multimediali cinesi: piattaforme di streaming, lettori Android TV, playlist IPTV, motori di ricerca per cloud storage e tracker torrent. Tuttavia, da una prospettiva tecnica, il progetto è notevole per la sua implementazione del controllo di disponibilità dei link e il design della struttura dati.
Cosa c'è dentro il catalogo
Il database del progetto copre circa un centinaio di risorse, organizzate per categoria:
- Configurazioni e interfacce pronte all'uso per lettori TVBox e CatVod
- Aggregatori di contenuti per set-top box TV basati su Android
- Lettori e client open-source come Kazumi, Animeko e SeleneTV
- Link a flussi IPTV pubblici e parser come
iptv-orgeiptv-api
Gli autori del catalogo valutano ogni risorsa secondo quattro criteri: dimensione del database, velocità di risposta, assenza di pubblicità invasiva e stabilità del dominio. I punteggi vengono archiviati in formato JSON, con la valutazione finale mostrata nella tabella del readme.
Verifica automatica della disponibilità dei link tramite GitHub Actions
La caratteristica principale del repository risiede nella sua configurazione CI/CD. Invece di rimuovere manualmente i link non funzionanti, l'autore ha configurato una pipeline utilizzando GitHub Actions.
Gli script vengono eseguiti su base pianificata ogni mattina alle 09:00 ora di Pechino, oltre che ad ogni commit contenente nuovi dati. Il processo funziona come segue:
- Il database dei link viene archiviato in un file separato
resources/resources.json. - L'Action attiva la validazione dello schema dei dati
validate-data.yml. - Il worker
check-availability.ymleffettua il ping di ogni sito e registra il codice di risposta. - I risultati vengono scritti nel report
reports/availability.json. - Lo script aggiorna dinamicamente gli stati in
README.md, applicando marcatori: verde per i siti operativi, giallo per le restrizioni parziali e rosso per quelli non disponibili.
Questo approccio trasforma un file markdown statico in una dashboard dinamica dello stato.
Architettura di archiviazione dei dati
Ogni voce nel database è rappresentata come un oggetto JSON strutturato. Ecco un esempio della struttura di tracciamento:
{
"id": "kazumi",
"name": "Kazumi",
"url": "https://kazumi.app/download",
"category": "app",
"platforms": ["Android", "iOS", "Windows", "macOS", "HarmonyOS"],
"rating": {
"volume": 5,
"speed": 5,
"cleanliness": 5,
"stability": 5
},
"risk": {
"copyright": "low",
"security": "low",
"privacy": "low"
}
}
Separare i contenuti in resources.json e la presentazione visiva in README.md semplifica la gestione delle pull request. Gli utenti inviano nuovi siti attraverso i moduli Issues standard di GitHub (template YAML), e il maintainer deve solo verificare la conformità alle regole e approvare il merge.
Come questo progetto beneficia gli sviluppatori
Se stai cercando client pronti all'uso per centri multimediali domestici o set-top box TV, troverai link a fork attuali di FongMi TV, TVBox, parser pansou e lettori Kazumi.
Se gestisci un tuo repository di strumenti utili (awesome-list), il progetto vale la pena di essere forkato per la sua struttura di automazione:
- Workflow pronto all'uso per il ping giornaliero di indirizzi esterni
- Generazione di tabelle con date di controllo e indicatori direttamente in Markdown
- Validazione dei dati di input tramite GitHub Actions
- Archiviazione della cronologia dei controlli in file JSON all'interno del repository
Il catalogo dimostra come un semplice elenco di link possa diventare un microservizio manutenibile usando solo GitHub Actions. Puoi esplorare la struttura del workflow o trovare lettori multimediali Android TV nel repository laoma2053/awesome-zhuiju-free.
Progetti correlati