>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Kotlin

Kotlinで構築されたQuickNovel ウェブリーダーアプリの仕組み

アジアのライトノベルやRoyal Roadからの英語フィクションのファンは、同じ問題に繰り返し直面しています。ブラウザでウェブリーダーでウェブ小説をスマホで開くのは不便です。ページにはバナーが散乱し、autoplayingの動画がポップアップし、ネットワーク接続なしでは地下鉄でチャプターすら開けないこともあります。

QuickNovelプロジェクトは、この問題を根本的に解決しようとしています。複数のサイトのクリーンなテキストを抽出し、オフラインで読める整形された本に変換する無料のオープンソースAndroidアプリケーションです。

なぜ個別のアグリゲーターが必要なのか

Moon+ Readerのような標準的なリーダーとは異なり、QuickNovelはコンテンツ配信も担当しています。 著者は自分のサーバーに本を保管していません—この app works similarly to a search engine. You enter a title, QuickNovel sends requests to supported platforms, fetches HTML pages, cleans out the junk, and assembles chapters into a unified structure.

ソースリストは約40のリソースを擁しています。その中にはRoyal Road、Scribble Hub、Anna's Archiveのような大規模な英語カタログ,以及特定のリクエスト先が含まれています。

これが検索とダウンロード中のアプリインターフェースの様子です:

Main screen Site search Downloads Book page Reading mode

ソースコードの魅力

この app is completely written in Kotlin under the GPL-3.0 license. Android開発者であれば、リポジトリのコード里有用な実装例を見つけられるでしょう。

モジュール式パーサーシステム

このような appの最も複雑な部分は、多くの異なるサイトのサポートです。QuickNovelでは、各ソースはprovider抽象化によって記述されています。ベースクラスは検索、メタデータの取得、チャプターテキストのパースに関するルールを定義しています。新しいサイトの追加は、適切なCSSセレクターまたはJSONエンドポイントを持つ単一ファイルを作成するだけで完了します。

EPUBへのビルドとパッケージング

QuickNovelは、内蔵リーダーでテキストをレンダリングするだけでなく、ダウンロードしたチャプターを標準的なEPUB形式にパッケージできます。これは、サードパーティのリーダーや電子書籍リーダーで読書したい場合に便利です。

このアプローチの主な問題点

ウェブスクレイピングには避けられない欠点があります。サイト管理者がレイアウトを変更したり、新しいドメインに移行したり、Cloudflareの protectionを強化したりすると、パーサーが機能しなくなります。

現在、約250件の未解決issueがリポジトリにあります。そのほとんどはプロバイダーの問題に関するものです。開発はコミュニティのアクティビティに依存しています。誰かが問題を察觉し、コード内のCSSセレクターを修正してpull requestを提出します。

このプロジェクトが役立つ人

ウェブフィクション активно読み、网络连接を切ってでも 广告を避けたいなら、QuickNovelをインストールする価値は十分にあります。

また、Kotlin開発者にとって、实用的なモバイルアプリケーションで数百ページの非同期読み込み、ファイルシステム操作、HTML解析を整理する方法 хороший примерです。ソースコードはGitHubで入手可能です。

関連プロジェクト