>_ DevTrendses

Idioma

Inicio

Lenguajes

Secciones

Frontend Backend Móvil DevOps AI / ML GameDev Blockchain Embebidos Seguridad
Kotlin

Cómo se construye QuickNovel, el lector de novelas web en Kotlin

Los aficionados a las novelas ligeras asiáticas y la ficción en inglés de Royal Road se enfrentan regularmente al mismo problema. Leer novelas web en el teléfono a través del navegador es incómodo: las páginas están llenas de banners, aparecen vídeos que se reproducen automáticamente y ni siquiera puedes abrir un capítulo en el metro sin conexión a internet.

El proyecto QuickNovel intenta resolver este problema de forma radical. Es una aplicación Android gratuita y de código abierto que extrae texto limpio de decenas de sitios y lo convierte en prácticos libros sin conexión.

Por qué se necesita un agregador independiente

A diferencia de los lectores estándar como Moon+ Reader, QuickNovel también se encarga de la entrega de contenido. Los autores no almacenan los libros en su propio servidor: la aplicación funciona de manera similar a un motor de búsqueda. Ingresas un título, QuickNovel envía solicitudes a las plataformas compatibles, obtiene las páginas HTML, elimina el contenido innecesario y ensambla los capítulos en una estructura unificada.

La lista de fuentes incluye aproximadamente cuarenta recursos. Entre ellos se encuentran grandes catálogos en inglés como Royal Road, Scribble Hub y Anna's Archive, así como agregadores específicos de traducciones.

Así es como se ve la interfaz de la aplicación durante la búsqueda y descarga:

Pantalla principal Búsqueda por sitio Descargas Página del libro Modo de lectura

Qué hay de interesante en el código fuente

La aplicación está completamente escrita en Kotlin bajo la licencia GPL-3.0. Si desarrollas para Android, puedes encontrar varias soluciones prácticas en el código del repositorio.

Sistema modular de analizadores

La parte más compleja de este tipo de aplicaciones es admitir muchos sitios diferentes. En QuickNovel, cada fuente se describe a través de una abstracción de proveedor. La clase base define reglas para buscar, obtener metadatos y analizar el texto de los capítulos. Agregar un nuevo sitio se reduce a crear un único archivo con los selectores CSS o los endpoints JSON correctos.

Construcción y empaquetado en EPUB

QuickNovel no solo puede renderizar texto en el lector integrado, sino también empaquetar los capítulos descargados en el formato estándar EPUB. Esto es conveniente si prefieres leer a través de lectores de terceros o en un lector de libros electrónicos.

El problema principal de este enfoque

El web scraping tiene un inconveniente inevitable. Tan pronto como los propietarios de los sitios cambian el diseño, se mudan a un nuevo dominio o activan la protección agresiva de Cloudflare, el analizador se rompe.

Actualmente, el repositorio del proyecto tiene aproximadamente 250 issues abiertos. La mayoría de ellos se refieren a proveedores rotos. El desarrollo aquí depende de la actividad de la comunidad: alguien nota una rotura, corrige el selector CSS en el código y envía un pull request.

A quién le será útil este proyecto

Vale la pena instalar QuickNovel si lees activamente ficción web y quieres deshacerte de los anuncios y las dependencias de la conectividad a internet.

Y para los desarrolladores en Kotlin, es un buen ejemplo de cómo organizar la carga asíncrona de cientos de páginas, operaciones del sistema de archivos y análisis de HTML en una aplicación móvil real. El código fuente está disponible en GitHub.

Proyectos relacionados