>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
Kotlin

Como o Leitor de Web Novels QuickNovel é Construído em Kotlin

Fãs de light novels asiáticos e ficção em inglês do Royal Road enfrentam regularmente o mesmo problema. Ler web novels no celular pelo navegador é inconveniente: as páginas estão cheias de banners, vídeos que tocam automaticamente aparecem, e você nem consegue abrir um capítulo no metrô sem conexão com a internet.

O projeto QuickNovel tenta resolver esse problema radicalmente. É um aplicativo Android gratuito e de código aberto que extrai texto limpo de dezenas de sites e os transforma em livros offline organizados.

Por que um agregador separado é necessário

Ao contrário de leitores padrão como o Moon+ Reader, o QuickNovel também lida com a entrega de conteúdo. Os autores não armazenam livros em seus próprios servidores — o aplicativo funciona de forma semelhante a um motor de busca. Você digita um título, o QuickNovel envia requisições para as plataformas suportadas, busca páginas HTML, limpa o conteúdo indesejado e monta os capítulos em uma estrutura unificada.

A lista de fontes menciona cerca de quarenta recursos. Entre eles estão grandes catálogos em inglês como Royal Road, Scribble Hub e Anna's Archive, além de agregadores específicos de traduções.

É assim que a interface do aplicativo fica durante a busca e download:

Main screen Site search Downloads Book page Reading mode

O que há de interessante no código-fonte

O aplicativo é totalmente escrito em Kotlin sob a licença GPL-3.0. Se você desenvolve para Android, pode encontrar várias soluções práticas no código do repositório.

Sistema modular de parsers

A parte mais complexa desses aplicativos é dar suporte a muitos sites diferentes. No QuickNovel, cada fonte é descrita através de uma abstração de provider. A classe base define regras para busca, recuperação de metadados e parsing do texto dos capítulos. Adicionar um novo site se resume a criar um único arquivo com os seletores CSS ou endpoints JSON corretos.

Build e empacotamento em EPUB

O QuickNovel pode não apenas renderizar texto no leitor integrado, mas também empacotar capítulos baixados no formato padrão EPUB. Isso é conveniente se você preferir ler através de leitores de terceiros ou em um e-reader.

O principal problema dessa abordagem

O web scraping tem uma desvantagem inevitável. Assim que os proprietários dos sites mudam o layout, migram para um novo domínio ou ativam proteção agressiva do Cloudflare, o parser quebra.

O repositório do projeto atualmente tem cerca de 250 issues abertas. A maioria deles diz respeito a providers quebrados. O desenvolvimento aqui depende da atividade da comunidade: alguém percebe a quebra, corrige o seletor CSS no código e submete um pull request.

Para quem o projeto será útil

O QuickNovel vale a pena instalar se você lê ficção da web ativamente e quer se livrar de anúncios e dependências de conectividade com a internet.

E para desenvolvedores Kotlin, é um bom exemplo de como organizar carregamento assíncrono de centenas de páginas, operações no sistema de arquivos e parsing de HTML em uma aplicação mobile real. O código-fonte está disponível no GitHub.

Projetos relacionados