>_ DevTrendsit

Lingua

Home

Linguaggi

Sezioni

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicurezza
Kotlin

Come è costruito QuickNovel, il lettore di web novel in Kotlin

Gli appassionati di light novel asiatiche e di narrativa in inglese da Royal Road affrontano regolarmente lo stesso problema. Leggere web novel sul telefono tramite browser è scomodo: le pagine sono piene di banner, compaiono video in riproduzione automatica e non puoi nemmeno aprire un capitolo in metropolitana senza una connessione di rete.

Il progetto QuickNovel cerca di risolvere questo problema in modo radicale. È un'applicazione Android gratuita e open-source che estrae testo pulito da decine di siti e lo trasforma in comodi libri offline.

Perché è necessario un aggregatore separato

A differenza dei lettori standard come Moon+ Reader, QuickNovel gestisce anche la distribuzione dei contenuti. Gli autori non memorizzano i libri sui propri server: l'app funziona in modo simile a un motore di ricerca. Inserisci un titolo, QuickNovel invia richieste alle piattaforme supportate, recupera le pagine HTML, elimina il superfluo e assembla i capitoli in una struttura unificata.

L'elenco delle fonti dichiara circa quaranta risorse. Tra queste ci sono grandi cataloghi in lingua inglese come Royal Road, Scribble Hub e Anna's Archive, oltre ad aggregatori specifici di traduzioni.

Questo è l'aspetto dell'interfaccia dell'app durante la ricerca e il download:

Schermata principale Ricerca nel sito Download Pagina del libro Modalità di lettura

Cosa c'è di interessante nel codice sorgente

L'app è completamente scritta in Kotlin con licenza GPL-3.0. Se sviluppi per Android, puoi trovare diverse soluzioni pratiche nel codice del repository.

Sistema modulare di parser

La parte più complessa di queste applicazioni è supportare molti siti diversi. In QuickNovel, ogni fonte viene descritta attraverso un'astrazione provider. La classe base definisce le regole per la ricerca, il recupero dei metadati e il parsing del testo dei capitoli. Aggiungere un nuovo sito significa semplicemente creare un singolo file con i selettori CSS o gli endpoint JSON corretti.

Compilazione e pacchettizzazione in EPUB

QuickNovel non solo può visualizzare il testo nel lettore integrato, ma anche pacchettizzare i capitoli scaricati nel formato EPUB standard. Questo è comodo se preferisci leggere tramite lettori di terze parti o su un e-reader.

Il problema principale di questo approccio

Il web scraping ha uno svantaggio inevitabile. Non appena i proprietari dei siti cambiano il layout, si spostano su un nuovo dominio o attivano una protezione aggressiva di Cloudflare, il parser si rompe.

Il repository del progetto ha attualmente circa 250 issue aperte. La maggior parte riguarda provider non funzionanti. Lo sviluppo qui si basa sull'attività della comunità: qualcuno nota un guasto, corregge il selettore CSS nel codice e invia una pull request.

A chi sarà utile questo progetto

QuickNovel vale la pena di essere installato se leggi attivamente narrativa web e vuoi liberarti delle pubblicità e delle dipendenze dalla connettività internet.

E per gli sviluppatori Kotlin, è un buon esempio di come organizzare il caricamento asincrono di centinaia di pagine, le operazioni sul file system e il parsing HTML in un'applicazione mobile reale. Il codice sorgente è disponibile su GitHub.

Progetti correlati