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:

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