>_ DevTrendsfr

Langue

Accueil

Langages

Sections

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarqué Sécurité
Kotlin

Comment l'application de lecture de romans web QuickNovel est développée en Kotlin

Les amateurs de light novels asiatiques et de fiction en anglais de Royal Road font régulièrement face au même problème. Lire des romans web sur un téléphone via un navigateur est peu pratique : les pages sont encombrées de bannières, des vidéos en lecture automatique surgissent, et vous ne pouvez même pas ouvrir un chapitre dans le métro sans connexion réseau.

Le projet QuickNovel essaie de résoudre ce problème de manière radicale. C'est une application Android gratuite et open source qui extrait du texte propre de dizaines de sites et le transforme en livres hors ligne bien rangés.

Pourquoi un agrégateur séparé est nécessaire

Contrairement aux lecteurs standard comme Moon+ Reader, QuickNovel gère également la livraison de contenu. Les auteurs ne stockent pas leurs livres sur leur propre serveur — l'application fonctionne de manière similaire à un moteur de recherche. Vous entrez un titre, QuickNovel envoie des requêtes aux plateformes supportées, récupère les pages HTML, nettoie le contenu indésirable et assemble les chapitres dans une structure unifiée.

La liste des sources revendique environ quarante ressources. Parmi elles se trouvent de grands catalogues en anglais comme Royal Road, Scribble Hub et Anna's Archive, ainsi que des agrégateurs de traductions spécifiques.

Voici à quoi ressemble l'interface de l'application pendant la recherche et le téléchargement :

Écran principal Recherche de site Téléchargements Page du livre Mode lecture

Ce qui est intéressant dans le code source

L'application est entièrement écrite en Kotlin sous licence GPL-3.0. Si vous développez pour Android, vous pouvez trouver plusieurs solutions pratiques dans le code du dépôt.

Système modulaire de parseurs

La partie la plus complexe de ces applications est la gestion de nombreux sites différents. Dans QuickNovel, chaque source est décrite via une abstraction de provider. La classe de base définit les règles de recherche, de récupération des métadonnées et de parsing du texte des chapitres. Ajouter un nouveau site se résume à créer un seul fichier avec les sélecteurs CSS ou les points de terminaison JSON appropriés.

Construction et empaquetage en EPUB

QuickNovel peut non seulement afficher le texte dans le lecteur intégré, mais aussi empaqueter les chapitres téléchargés au format EPUB standard. C'est pratique si vous préférez lire via des lecteurs tiers ou sur une liseuse.

Le principal problème avec cette approche

Le web scraping présente un inconvenient inévitable. Dès que les propriétaires de sites changent la mise en page, migrent vers un nouveau domaine ou activent une protection Cloudflare agressive, le parseur se casse.

Le dépôt du projet compte actuellement environ 250 issues ouvertes. La plupart concernent des providers cassés. Le développement ici repose sur l'activité de la communauté : quelqu'un remarque une rupture, corrige le sélecteur CSS dans le code et soumet une pull request.

Qui trouvera ce projet utile

QuickNovel mérite d'être installé si vous lisez activement de la fiction web et voulez vous débarrasser des publicités et des dépendances à la connectivité internet.

Et pour les développeurs Kotlin, c'est un bon exemple de comment organiser le chargement asynchrone de centaines de pages, les opérations sur le système de fichiers et le parsing HTML dans une vraie application mobile. Le code source est disponible sur GitHub.

Projets similaires