LICENSE
README.md
pyproject.toml
src/novel_downloader/__init__.py
src/novel_downloader/__main__.py
src/novel_downloader/py.typed
src/novel_downloader.egg-info/PKG-INFO
src/novel_downloader.egg-info/SOURCES.txt
src/novel_downloader.egg-info/dependency_links.txt
src/novel_downloader.egg-info/entry_points.txt
src/novel_downloader.egg-info/requires.txt
src/novel_downloader.egg-info/top_level.txt
src/novel_downloader/apps/__init__.py
src/novel_downloader/apps/constants.py
src/novel_downloader/apps/utils.py
src/novel_downloader/apps/cli/__init__.py
src/novel_downloader/apps/cli/interactive.py
src/novel_downloader/apps/cli/main.py
src/novel_downloader/apps/cli/prompts.py
src/novel_downloader/apps/cli/ui.py
src/novel_downloader/apps/cli/ui_adapters.py
src/novel_downloader/apps/cli/commands/__init__.py
src/novel_downloader/apps/cli/commands/base.py
src/novel_downloader/apps/cli/commands/clean.py
src/novel_downloader/apps/cli/commands/config.py
src/novel_downloader/apps/cli/commands/download.py
src/novel_downloader/apps/cli/commands/export.py
src/novel_downloader/apps/cli/commands/search.py
src/novel_downloader/apps/web/__init__.py
src/novel_downloader/apps/web/main.py
src/novel_downloader/apps/web/models.py
src/novel_downloader/apps/web/ui_adapters.py
src/novel_downloader/apps/web/components/__init__.py
src/novel_downloader/apps/web/components/navigation.py
src/novel_downloader/apps/web/pages/__init__.py
src/novel_downloader/apps/web/pages/download.py
src/novel_downloader/apps/web/pages/history.py
src/novel_downloader/apps/web/pages/progress.py
src/novel_downloader/apps/web/pages/search.py
src/novel_downloader/apps/web/services/__init__.py
src/novel_downloader/apps/web/services/client_dialog.py
src/novel_downloader/apps/web/services/cred_broker.py
src/novel_downloader/apps/web/services/task_manager.py
src/novel_downloader/infra/__init__.py
src/novel_downloader/infra/book_url_resolver.py
src/novel_downloader/infra/cookies.py
src/novel_downloader/infra/http_defaults.py
src/novel_downloader/infra/i18n.py
src/novel_downloader/infra/logger.py
src/novel_downloader/infra/paths.py
src/novel_downloader/infra/config/__init__.py
src/novel_downloader/infra/config/adapter.py
src/novel_downloader/infra/config/file_io.py
src/novel_downloader/infra/persistence/__init__.py
src/novel_downloader/infra/persistence/chapter_storage.py
src/novel_downloader/infra/persistence/state.py
src/novel_downloader/infra/sessions/__init__.py
src/novel_downloader/infra/sessions/_aiohttp.py
src/novel_downloader/infra/sessions/_curl_cffi.py
src/novel_downloader/infra/sessions/_httpx.py
src/novel_downloader/infra/sessions/base.py
src/novel_downloader/infra/sessions/response.py
src/novel_downloader/libs/__init__.py
src/novel_downloader/libs/font_utils.py
src/novel_downloader/libs/imagekit.py
src/novel_downloader/libs/time_utils.py
src/novel_downloader/libs/crypto/__init__.py
src/novel_downloader/libs/crypto/hash_utils.py
src/novel_downloader/libs/crypto/rc4.py
src/novel_downloader/libs/epub_builder/__init__.py
src/novel_downloader/libs/epub_builder/constants.py
src/novel_downloader/libs/epub_builder/core.py
src/novel_downloader/libs/epub_builder/models.py
src/novel_downloader/libs/filesystem/__init__.py
src/novel_downloader/libs/filesystem/file.py
src/novel_downloader/libs/filesystem/filename.py
src/novel_downloader/libs/filesystem/sanitize.py
src/novel_downloader/libs/html_builder/__init__.py
src/novel_downloader/libs/html_builder/constants.py
src/novel_downloader/libs/html_builder/core.py
src/novel_downloader/libs/html_builder/models.py
src/novel_downloader/libs/media/__init__.py
src/novel_downloader/libs/media/font.py
src/novel_downloader/libs/media/image.py
src/novel_downloader/libs/mini_js/__init__.py
src/novel_downloader/libs/mini_js/ast.py
src/novel_downloader/libs/mini_js/parser.py
src/novel_downloader/libs/mini_js/runtime.py
src/novel_downloader/libs/mini_js/tokenizer.py
src/novel_downloader/libs/mini_js/utils.py
src/novel_downloader/libs/textutils/__init__.py
src/novel_downloader/libs/textutils/numbers.py
src/novel_downloader/libs/textutils/truncate.py
src/novel_downloader/locales/zh_CN/LC_MESSAGES/messages.mo
src/novel_downloader/plugins/__init__.py
src/novel_downloader/plugins/registry.py
src/novel_downloader/plugins/search.py
src/novel_downloader/plugins/archived/aaatxt/fetcher.py
src/novel_downloader/plugins/archived/aaatxt/parser.py
src/novel_downloader/plugins/archived/aaatxt/searcher.py
src/novel_downloader/plugins/archived/biquyuedu/fetcher.py
src/novel_downloader/plugins/archived/biquyuedu/parser.py
src/novel_downloader/plugins/archived/deqixs/fetcher.py
src/novel_downloader/plugins/archived/deqixs/parser.py
src/novel_downloader/plugins/archived/deqixs/searcher.py
src/novel_downloader/plugins/archived/n69yue/fetcher.py
src/novel_downloader/plugins/archived/n69yue/parser.py
src/novel_downloader/plugins/archived/n69yue/searcher.py
src/novel_downloader/plugins/archived/n8tsw/fetcher.py
src/novel_downloader/plugins/archived/n8tsw/parser.py
src/novel_downloader/plugins/archived/wanbengo/fetcher.py
src/novel_downloader/plugins/archived/wanbengo/parser.py
src/novel_downloader/plugins/archived/wanbengo/searcher.py
src/novel_downloader/plugins/archived/xiaoshuoge/fetcher.py
src/novel_downloader/plugins/archived/xiaoshuoge/parser.py
src/novel_downloader/plugins/archived/xiaoshuoge/searcher.py
src/novel_downloader/plugins/archived/xs63b/fetcher.py
src/novel_downloader/plugins/archived/xs63b/parser.py
src/novel_downloader/plugins/archived/xs63b/searcher.py
src/novel_downloader/plugins/base/__init__.py
src/novel_downloader/plugins/base/client.py
src/novel_downloader/plugins/base/fetcher.py
src/novel_downloader/plugins/base/parser.py
src/novel_downloader/plugins/base/searcher.py
src/novel_downloader/plugins/common/client.py
src/novel_downloader/plugins/common/parser/__init__.py
src/novel_downloader/plugins/common/parser/biquge1.py
src/novel_downloader/plugins/common/parser/biquge2.py
src/novel_downloader/plugins/common/parser/biquge3.py
src/novel_downloader/plugins/common/parser/biquge4.py
src/novel_downloader/plugins/common/searcher/__init__.py
src/novel_downloader/plugins/common/searcher/sososhu.py
src/novel_downloader/plugins/mixins/__init__.py
src/novel_downloader/plugins/mixins/cleanup.py
src/novel_downloader/plugins/mixins/download.py
src/novel_downloader/plugins/mixins/export_epub.py
src/novel_downloader/plugins/mixins/export_html.py
src/novel_downloader/plugins/mixins/export_txt.py
src/novel_downloader/plugins/mixins/process.py
src/novel_downloader/plugins/processors/__init__.py
src/novel_downloader/plugins/processors/cleaner.py
src/novel_downloader/plugins/processors/corrector.py
src/novel_downloader/plugins/processors/zh_convert.py
src/novel_downloader/plugins/processors/translator/__init__.py
src/novel_downloader/plugins/processors/translator/edge.py
src/novel_downloader/plugins/processors/translator/google.py
src/novel_downloader/plugins/processors/translator/youdao.py
src/novel_downloader/plugins/protocols/__init__.py
src/novel_downloader/plugins/protocols/client.py
src/novel_downloader/plugins/protocols/fetcher.py
src/novel_downloader/plugins/protocols/parser.py
src/novel_downloader/plugins/protocols/processor.py
src/novel_downloader/plugins/protocols/ui.py
src/novel_downloader/plugins/sites/__init__.py
src/novel_downloader/plugins/sites/akatsuki_novels/fetcher.py
src/novel_downloader/plugins/sites/akatsuki_novels/parser.py
src/novel_downloader/plugins/sites/alicesw/fetcher.py
src/novel_downloader/plugins/sites/alicesw/parser.py
src/novel_downloader/plugins/sites/alicesw/searcher.py
src/novel_downloader/plugins/sites/alphapolis/fetcher.py
src/novel_downloader/plugins/sites/alphapolis/parser.py
src/novel_downloader/plugins/sites/b520/client.py
src/novel_downloader/plugins/sites/b520/fetcher.py
src/novel_downloader/plugins/sites/b520/parser.py
src/novel_downloader/plugins/sites/b520/searcher.py
src/novel_downloader/plugins/sites/biquge345/fetcher.py
src/novel_downloader/plugins/sites/biquge345/parser.py
src/novel_downloader/plugins/sites/biquge345/searcher.py
src/novel_downloader/plugins/sites/biquge5/fetcher.py
src/novel_downloader/plugins/sites/biquge5/parser.py
src/novel_downloader/plugins/sites/biquge5/searcher.py
src/novel_downloader/plugins/sites/biquguo/fetcher.py
src/novel_downloader/plugins/sites/biquguo/parser.py
src/novel_downloader/plugins/sites/biquguo/searcher.py
src/novel_downloader/plugins/sites/bixiange/fetcher.py
src/novel_downloader/plugins/sites/bixiange/parser.py
src/novel_downloader/plugins/sites/bixiange/searcher.py
src/novel_downloader/plugins/sites/blqudu/fetcher.py
src/novel_downloader/plugins/sites/blqudu/parser.py
src/novel_downloader/plugins/sites/bxwx9/fetcher.py
src/novel_downloader/plugins/sites/bxwx9/parser.py
src/novel_downloader/plugins/sites/bxwx9/searcher.py
src/novel_downloader/plugins/sites/ciluke/fetcher.py
src/novel_downloader/plugins/sites/ciluke/parser.py
src/novel_downloader/plugins/sites/ciluke/searcher.py
src/novel_downloader/plugins/sites/ciweimao/client.py
src/novel_downloader/plugins/sites/ciweimao/fetcher.py
src/novel_downloader/plugins/sites/ciweimao/parser.py
src/novel_downloader/plugins/sites/ciyuanji/client.py
src/novel_downloader/plugins/sites/ciyuanji/fetcher.py
src/novel_downloader/plugins/sites/ciyuanji/parser.py
src/novel_downloader/plugins/sites/ciyuanji/searcher.py
src/novel_downloader/plugins/sites/czbooks/fetcher.py
src/novel_downloader/plugins/sites/czbooks/parser.py
src/novel_downloader/plugins/sites/czbooks/searcher.py
src/novel_downloader/plugins/sites/dushu/fetcher.py
src/novel_downloader/plugins/sites/dushu/parser.py
src/novel_downloader/plugins/sites/dxmwx/fetcher.py
src/novel_downloader/plugins/sites/dxmwx/parser.py
src/novel_downloader/plugins/sites/dxmwx/searcher.py
src/novel_downloader/plugins/sites/esjzone/client.py
src/novel_downloader/plugins/sites/esjzone/fetcher.py
src/novel_downloader/plugins/sites/esjzone/parser.py
src/novel_downloader/plugins/sites/esjzone/searcher.py
src/novel_downloader/plugins/sites/faloo/client.py
src/novel_downloader/plugins/sites/faloo/fetcher.py
src/novel_downloader/plugins/sites/faloo/parser.py
src/novel_downloader/plugins/sites/fanqienovel/fetcher.py
src/novel_downloader/plugins/sites/fanqienovel/parser.py
src/novel_downloader/plugins/sites/fsshu/fetcher.py
src/novel_downloader/plugins/sites/fsshu/parser.py
src/novel_downloader/plugins/sites/fsshu/searcher.py
src/novel_downloader/plugins/sites/guidaye/fetcher.py
src/novel_downloader/plugins/sites/guidaye/parser.py
src/novel_downloader/plugins/sites/haiwaishubao/fetcher.py
src/novel_downloader/plugins/sites/haiwaishubao/parser.py
src/novel_downloader/plugins/sites/haiwaishubao/searcher.py
src/novel_downloader/plugins/sites/hetushu/fetcher.py
src/novel_downloader/plugins/sites/hetushu/parser.py
src/novel_downloader/plugins/sites/hetushu/searcher.py
src/novel_downloader/plugins/sites/hongxiuzhao/fetcher.py
src/novel_downloader/plugins/sites/hongxiuzhao/parser.py
src/novel_downloader/plugins/sites/i25zw/fetcher.py
src/novel_downloader/plugins/sites/i25zw/parser.py
src/novel_downloader/plugins/sites/i25zw/searcher.py
src/novel_downloader/plugins/sites/ixdzs8/fetcher.py
src/novel_downloader/plugins/sites/ixdzs8/parser.py
src/novel_downloader/plugins/sites/ixdzs8/searcher.py
src/novel_downloader/plugins/sites/jpxs123/fetcher.py
src/novel_downloader/plugins/sites/jpxs123/parser.py
src/novel_downloader/plugins/sites/jpxs123/searcher.py
src/novel_downloader/plugins/sites/kadokado/client.py
src/novel_downloader/plugins/sites/kadokado/fetcher.py
src/novel_downloader/plugins/sites/kadokado/parser.py
src/novel_downloader/plugins/sites/kadokado/searcher.py
src/novel_downloader/plugins/sites/ktshu/fetcher.py
src/novel_downloader/plugins/sites/ktshu/parser.py
src/novel_downloader/plugins/sites/ktshu/searcher.py
src/novel_downloader/plugins/sites/kunnu/fetcher.py
src/novel_downloader/plugins/sites/kunnu/parser.py
src/novel_downloader/plugins/sites/laoyaoxs/fetcher.py
src/novel_downloader/plugins/sites/laoyaoxs/parser.py
src/novel_downloader/plugins/sites/laoyaoxs/searcher.py
src/novel_downloader/plugins/sites/lewenn/fetcher.py
src/novel_downloader/plugins/sites/lewenn/parser.py
src/novel_downloader/plugins/sites/linovel/fetcher.py
src/novel_downloader/plugins/sites/linovel/parser.py
src/novel_downloader/plugins/sites/linovel/searcher.py
src/novel_downloader/plugins/sites/linovelib/fetcher.py
src/novel_downloader/plugins/sites/linovelib/parser.py
src/novel_downloader/plugins/sites/lnovel/fetcher.py
src/novel_downloader/plugins/sites/lnovel/parser.py
src/novel_downloader/plugins/sites/lvsewx/fetcher.py
src/novel_downloader/plugins/sites/lvsewx/parser.py
src/novel_downloader/plugins/sites/mangg_com/fetcher.py
src/novel_downloader/plugins/sites/mangg_com/parser.py
src/novel_downloader/plugins/sites/mangg_net/fetcher.py
src/novel_downloader/plugins/sites/mangg_net/parser.py
src/novel_downloader/plugins/sites/mangg_net/searcher.py
src/novel_downloader/plugins/sites/mjyhb/fetcher.py
src/novel_downloader/plugins/sites/mjyhb/parser.py
src/novel_downloader/plugins/sites/n101kanshu/fetcher.py
src/novel_downloader/plugins/sites/n101kanshu/parser.py
src/novel_downloader/plugins/sites/n101kanshu/searcher.py
src/novel_downloader/plugins/sites/n17k/client.py
src/novel_downloader/plugins/sites/n17k/fetcher.py
src/novel_downloader/plugins/sites/n17k/parser.py
src/novel_downloader/plugins/sites/n23ddw/fetcher.py
src/novel_downloader/plugins/sites/n23ddw/parser.py
src/novel_downloader/plugins/sites/n23ddw/searcher.py
src/novel_downloader/plugins/sites/n23qb/fetcher.py
src/novel_downloader/plugins/sites/n23qb/parser.py
src/novel_downloader/plugins/sites/n23qb/searcher.py
src/novel_downloader/plugins/sites/n37yq/fetcher.py
src/novel_downloader/plugins/sites/n37yq/parser.py
src/novel_downloader/plugins/sites/n37yq/searcher.py
src/novel_downloader/plugins/sites/n37yue/fetcher.py
src/novel_downloader/plugins/sites/n37yue/parser.py
src/novel_downloader/plugins/sites/n37yue/searcher.py
src/novel_downloader/plugins/sites/n69hao/fetcher.py
src/novel_downloader/plugins/sites/n69hao/parser.py
src/novel_downloader/plugins/sites/n69shuba/fetcher.py
src/novel_downloader/plugins/sites/n69shuba/parser.py
src/novel_downloader/plugins/sites/n71ge/fetcher.py
src/novel_downloader/plugins/sites/n71ge/parser.py
src/novel_downloader/plugins/sites/n71ge/searcher.py
src/novel_downloader/plugins/sites/n8novel/fetcher.py
src/novel_downloader/plugins/sites/n8novel/parser.py
src/novel_downloader/plugins/sites/n8novel/searcher.py
src/novel_downloader/plugins/sites/novelpia/fetcher.py
src/novel_downloader/plugins/sites/novelpia/parser.py
src/novel_downloader/plugins/sites/piaotia/fetcher.py
src/novel_downloader/plugins/sites/piaotia/parser.py
src/novel_downloader/plugins/sites/piaotia/searcher.py
src/novel_downloader/plugins/sites/pilibook/fetcher.py
src/novel_downloader/plugins/sites/pilibook/parser.py
src/novel_downloader/plugins/sites/qbtr/fetcher.py
src/novel_downloader/plugins/sites/qbtr/parser.py
src/novel_downloader/plugins/sites/qbtr/searcher.py
src/novel_downloader/plugins/sites/qidian/client.py
src/novel_downloader/plugins/sites/qidian/fetcher.py
src/novel_downloader/plugins/sites/qidian/parser.py
src/novel_downloader/plugins/sites/qidian/searcher.py
src/novel_downloader/plugins/sites/qqbook/client.py
src/novel_downloader/plugins/sites/qqbook/fetcher.py
src/novel_downloader/plugins/sites/qqbook/parser.py
src/novel_downloader/plugins/sites/quanben5/fetcher.py
src/novel_downloader/plugins/sites/quanben5/parser.py
src/novel_downloader/plugins/sites/quanben5/searcher.py
src/novel_downloader/plugins/sites/ruochu/client.py
src/novel_downloader/plugins/sites/ruochu/fetcher.py
src/novel_downloader/plugins/sites/ruochu/parser.py
src/novel_downloader/plugins/sites/sfacg/client.py
src/novel_downloader/plugins/sites/sfacg/fetcher.py
src/novel_downloader/plugins/sites/sfacg/parser.py
src/novel_downloader/plugins/sites/shaoniandream/fetcher.py
src/novel_downloader/plugins/sites/shaoniandream/parser.py
src/novel_downloader/plugins/sites/shauthor/fetcher.py
src/novel_downloader/plugins/sites/shauthor/parser.py
src/novel_downloader/plugins/sites/shencou/client.py
src/novel_downloader/plugins/sites/shencou/fetcher.py
src/novel_downloader/plugins/sites/shencou/parser.py
src/novel_downloader/plugins/sites/shu111/fetcher.py
src/novel_downloader/plugins/sites/shu111/parser.py
src/novel_downloader/plugins/sites/shuhaige/fetcher.py
src/novel_downloader/plugins/sites/shuhaige/parser.py
src/novel_downloader/plugins/sites/shuhaige/searcher.py
src/novel_downloader/plugins/sites/syosetu/fetcher.py
src/novel_downloader/plugins/sites/syosetu/parser.py
src/novel_downloader/plugins/sites/syosetu18/fetcher.py
src/novel_downloader/plugins/sites/syosetu18/parser.py
src/novel_downloader/plugins/sites/syosetu_org/fetcher.py
src/novel_downloader/plugins/sites/syosetu_org/parser.py
src/novel_downloader/plugins/sites/tianyabooks/fetcher.py
src/novel_downloader/plugins/sites/tianyabooks/parser.py
src/novel_downloader/plugins/sites/tongrenquan/fetcher.py
src/novel_downloader/plugins/sites/tongrenquan/parser.py
src/novel_downloader/plugins/sites/tongrenquan/searcher.py
src/novel_downloader/plugins/sites/tongrenshe/fetcher.py
src/novel_downloader/plugins/sites/tongrenshe/parser.py
src/novel_downloader/plugins/sites/tongrenshe/searcher.py
src/novel_downloader/plugins/sites/trxs/fetcher.py
src/novel_downloader/plugins/sites/trxs/parser.py
src/novel_downloader/plugins/sites/trxs/searcher.py
src/novel_downloader/plugins/sites/ttkan/fetcher.py
src/novel_downloader/plugins/sites/ttkan/parser.py
src/novel_downloader/plugins/sites/ttkan/searcher.py
src/novel_downloader/plugins/sites/twkan/fetcher.py
src/novel_downloader/plugins/sites/twkan/parser.py
src/novel_downloader/plugins/sites/uaa/client.py
src/novel_downloader/plugins/sites/uaa/fetcher.py
src/novel_downloader/plugins/sites/uaa/parser.py
src/novel_downloader/plugins/sites/uaa/searcher.py
src/novel_downloader/plugins/sites/wenku8/fetcher.py
src/novel_downloader/plugins/sites/wenku8/parser.py
src/novel_downloader/plugins/sites/westnovel/fetcher.py
src/novel_downloader/plugins/sites/westnovel/parser.py
src/novel_downloader/plugins/sites/westnovel_sub/fetcher.py
src/novel_downloader/plugins/sites/westnovel_sub/parser.py
src/novel_downloader/plugins/sites/wxsck/fetcher.py
src/novel_downloader/plugins/sites/wxsck/parser.py
src/novel_downloader/plugins/sites/xiguashuwu/fetcher.py
src/novel_downloader/plugins/sites/xiguashuwu/parser.py
src/novel_downloader/plugins/sites/xiguashuwu/searcher.py
src/novel_downloader/plugins/sites/xshbook/fetcher.py
src/novel_downloader/plugins/sites/xshbook/parser.py
src/novel_downloader/plugins/sites/xshbook/searcher.py
src/novel_downloader/plugins/sites/yamibo/fetcher.py
src/novel_downloader/plugins/sites/yamibo/parser.py
src/novel_downloader/plugins/sites/yibige/client.py
src/novel_downloader/plugins/sites/yibige/fetcher.py
src/novel_downloader/plugins/sites/yibige/parser.py
src/novel_downloader/plugins/sites/yodu/fetcher.py
src/novel_downloader/plugins/sites/yodu/parser.py
src/novel_downloader/plugins/sites/yodu/searcher.py
src/novel_downloader/plugins/sites/zhenhunxiaoshuo/fetcher.py
src/novel_downloader/plugins/sites/zhenhunxiaoshuo/parser.py
src/novel_downloader/plugins/utils/__init__.py
src/novel_downloader/plugins/utils/js_eval.py
src/novel_downloader/plugins/utils/rate_limiter.py
src/novel_downloader/plugins/utils/ciweimao/__init__.py
src/novel_downloader/plugins/utils/ciweimao/chapter.py
src/novel_downloader/plugins/utils/ciweimao/image.py
src/novel_downloader/plugins/utils/ciweimao/my_encryt_extend.py
src/novel_downloader/plugins/utils/yuewen/__init__.py
src/novel_downloader/plugins/utils/yuewen/node_decryptor.py
src/novel_downloader/plugins/utils/yuewen/qdcss.py
src/novel_downloader/plugins/utils/yuewen/qdfont.py
src/novel_downloader/resources/config/settings.sample.toml
src/novel_downloader/resources/css_styles/epub_style.css
src/novel_downloader/resources/css_styles/html_chapter.css
src/novel_downloader/resources/css_styles/html_index.css
src/novel_downloader/resources/js_scripts/expr_to_json.js
src/novel_downloader/resources/js_scripts/html_main.js
src/novel_downloader/resources/js_scripts/qidian_decrypt_node.js
src/novel_downloader/resources/js_scripts/qq_decrypt_node.js
src/novel_downloader/resources/json/fanqienovel.json
src/novel_downloader/resources/json/hongxiuzhao.json
src/novel_downloader/resources/json/linovelib.json
src/novel_downloader/resources/json/n69yue.json
src/novel_downloader/resources/json/xiguashuwu.json
src/novel_downloader/resources/json/yodu.json
src/novel_downloader/schemas/__init__.py
src/novel_downloader/schemas/auth.py
src/novel_downloader/schemas/book.py
src/novel_downloader/schemas/config.py
src/novel_downloader/schemas/process.py
src/novel_downloader/schemas/search.py