novel-downloader 1.5.0__py3-none-any.whl → 2.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. novel_downloader/__init__.py +1 -1
  2. novel_downloader/cli/__init__.py +1 -3
  3. novel_downloader/cli/clean.py +21 -88
  4. novel_downloader/cli/config.py +26 -21
  5. novel_downloader/cli/download.py +79 -66
  6. novel_downloader/cli/export.py +17 -21
  7. novel_downloader/cli/main.py +1 -1
  8. novel_downloader/cli/search.py +62 -65
  9. novel_downloader/cli/ui.py +156 -0
  10. novel_downloader/config/__init__.py +8 -5
  11. novel_downloader/config/adapter.py +206 -209
  12. novel_downloader/config/{loader.py → file_io.py} +53 -26
  13. novel_downloader/core/__init__.py +5 -5
  14. novel_downloader/core/archived/deqixs/fetcher.py +115 -0
  15. novel_downloader/core/archived/deqixs/parser.py +132 -0
  16. novel_downloader/core/archived/deqixs/searcher.py +89 -0
  17. novel_downloader/core/{searchers/qidian.py → archived/qidian/searcher.py} +12 -20
  18. novel_downloader/core/archived/wanbengo/searcher.py +98 -0
  19. novel_downloader/core/archived/xshbook/searcher.py +93 -0
  20. novel_downloader/core/downloaders/__init__.py +3 -24
  21. novel_downloader/core/downloaders/base.py +49 -23
  22. novel_downloader/core/downloaders/common.py +191 -137
  23. novel_downloader/core/downloaders/qianbi.py +187 -146
  24. novel_downloader/core/downloaders/qidian.py +187 -141
  25. novel_downloader/core/downloaders/registry.py +4 -2
  26. novel_downloader/core/downloaders/signals.py +46 -0
  27. novel_downloader/core/exporters/__init__.py +3 -20
  28. novel_downloader/core/exporters/base.py +33 -37
  29. novel_downloader/core/exporters/common/__init__.py +1 -2
  30. novel_downloader/core/exporters/common/epub.py +15 -10
  31. novel_downloader/core/exporters/common/main_exporter.py +19 -12
  32. novel_downloader/core/exporters/common/txt.py +17 -12
  33. novel_downloader/core/exporters/epub_util.py +59 -29
  34. novel_downloader/core/exporters/linovelib/__init__.py +1 -0
  35. novel_downloader/core/exporters/linovelib/epub.py +23 -25
  36. novel_downloader/core/exporters/linovelib/main_exporter.py +8 -12
  37. novel_downloader/core/exporters/linovelib/txt.py +20 -14
  38. novel_downloader/core/exporters/qidian.py +2 -8
  39. novel_downloader/core/exporters/registry.py +4 -2
  40. novel_downloader/core/exporters/txt_util.py +7 -7
  41. novel_downloader/core/fetchers/__init__.py +54 -48
  42. novel_downloader/core/fetchers/aaatxt.py +83 -0
  43. novel_downloader/core/fetchers/{biquge/session.py → b520.py} +6 -11
  44. novel_downloader/core/fetchers/{base/session.py → base.py} +37 -46
  45. novel_downloader/core/fetchers/{biquge/browser.py → biquyuedu.py} +12 -17
  46. novel_downloader/core/fetchers/dxmwx.py +110 -0
  47. novel_downloader/core/fetchers/eightnovel.py +139 -0
  48. novel_downloader/core/fetchers/{esjzone/session.py → esjzone.py} +19 -12
  49. novel_downloader/core/fetchers/guidaye.py +85 -0
  50. novel_downloader/core/fetchers/hetushu.py +92 -0
  51. novel_downloader/core/fetchers/{qianbi/browser.py → i25zw.py} +19 -28
  52. novel_downloader/core/fetchers/ixdzs8.py +113 -0
  53. novel_downloader/core/fetchers/jpxs123.py +101 -0
  54. novel_downloader/core/fetchers/lewenn.py +83 -0
  55. novel_downloader/core/fetchers/{linovelib/session.py → linovelib.py} +12 -13
  56. novel_downloader/core/fetchers/piaotia.py +105 -0
  57. novel_downloader/core/fetchers/qbtr.py +101 -0
  58. novel_downloader/core/fetchers/{qianbi/session.py → qianbi.py} +5 -10
  59. novel_downloader/core/fetchers/{qidian/session.py → qidian.py} +56 -64
  60. novel_downloader/core/fetchers/quanben5.py +92 -0
  61. novel_downloader/core/fetchers/{base/rate_limiter.py → rate_limiter.py} +2 -2
  62. novel_downloader/core/fetchers/registry.py +5 -16
  63. novel_downloader/core/fetchers/{sfacg/session.py → sfacg.py} +7 -10
  64. novel_downloader/core/fetchers/shencou.py +106 -0
  65. novel_downloader/core/fetchers/shuhaige.py +84 -0
  66. novel_downloader/core/fetchers/tongrenquan.py +84 -0
  67. novel_downloader/core/fetchers/ttkan.py +95 -0
  68. novel_downloader/core/fetchers/wanbengo.py +83 -0
  69. novel_downloader/core/fetchers/xiaoshuowu.py +106 -0
  70. novel_downloader/core/fetchers/xiguashuwu.py +177 -0
  71. novel_downloader/core/fetchers/xs63b.py +171 -0
  72. novel_downloader/core/fetchers/xshbook.py +85 -0
  73. novel_downloader/core/fetchers/{yamibo/session.py → yamibo.py} +19 -12
  74. novel_downloader/core/fetchers/yibige.py +114 -0
  75. novel_downloader/core/interfaces/__init__.py +1 -9
  76. novel_downloader/core/interfaces/downloader.py +6 -2
  77. novel_downloader/core/interfaces/exporter.py +7 -7
  78. novel_downloader/core/interfaces/fetcher.py +6 -19
  79. novel_downloader/core/interfaces/parser.py +7 -8
  80. novel_downloader/core/interfaces/searcher.py +9 -1
  81. novel_downloader/core/parsers/__init__.py +49 -12
  82. novel_downloader/core/parsers/aaatxt.py +132 -0
  83. novel_downloader/core/parsers/b520.py +116 -0
  84. novel_downloader/core/parsers/base.py +64 -12
  85. novel_downloader/core/parsers/biquyuedu.py +133 -0
  86. novel_downloader/core/parsers/dxmwx.py +162 -0
  87. novel_downloader/core/parsers/eightnovel.py +224 -0
  88. novel_downloader/core/parsers/esjzone.py +64 -69
  89. novel_downloader/core/parsers/guidaye.py +128 -0
  90. novel_downloader/core/parsers/hetushu.py +139 -0
  91. novel_downloader/core/parsers/i25zw.py +137 -0
  92. novel_downloader/core/parsers/ixdzs8.py +186 -0
  93. novel_downloader/core/parsers/jpxs123.py +137 -0
  94. novel_downloader/core/parsers/lewenn.py +142 -0
  95. novel_downloader/core/parsers/linovelib.py +48 -64
  96. novel_downloader/core/parsers/piaotia.py +189 -0
  97. novel_downloader/core/parsers/qbtr.py +136 -0
  98. novel_downloader/core/parsers/qianbi.py +48 -50
  99. novel_downloader/core/parsers/qidian/main_parser.py +756 -48
  100. novel_downloader/core/parsers/qidian/utils/__init__.py +3 -21
  101. novel_downloader/core/parsers/qidian/utils/decryptor_fetcher.py +1 -1
  102. novel_downloader/core/parsers/qidian/utils/node_decryptor.py +4 -4
  103. novel_downloader/core/parsers/quanben5.py +103 -0
  104. novel_downloader/core/parsers/registry.py +5 -16
  105. novel_downloader/core/parsers/sfacg.py +38 -45
  106. novel_downloader/core/parsers/shencou.py +215 -0
  107. novel_downloader/core/parsers/shuhaige.py +111 -0
  108. novel_downloader/core/parsers/tongrenquan.py +116 -0
  109. novel_downloader/core/parsers/ttkan.py +132 -0
  110. novel_downloader/core/parsers/wanbengo.py +191 -0
  111. novel_downloader/core/parsers/xiaoshuowu.py +173 -0
  112. novel_downloader/core/parsers/xiguashuwu.py +429 -0
  113. novel_downloader/core/parsers/xs63b.py +161 -0
  114. novel_downloader/core/parsers/xshbook.py +134 -0
  115. novel_downloader/core/parsers/yamibo.py +87 -131
  116. novel_downloader/core/parsers/yibige.py +166 -0
  117. novel_downloader/core/searchers/__init__.py +34 -3
  118. novel_downloader/core/searchers/aaatxt.py +107 -0
  119. novel_downloader/core/searchers/{biquge.py → b520.py} +29 -28
  120. novel_downloader/core/searchers/base.py +112 -36
  121. novel_downloader/core/searchers/dxmwx.py +105 -0
  122. novel_downloader/core/searchers/eightnovel.py +84 -0
  123. novel_downloader/core/searchers/esjzone.py +43 -25
  124. novel_downloader/core/searchers/hetushu.py +92 -0
  125. novel_downloader/core/searchers/i25zw.py +93 -0
  126. novel_downloader/core/searchers/ixdzs8.py +107 -0
  127. novel_downloader/core/searchers/jpxs123.py +107 -0
  128. novel_downloader/core/searchers/piaotia.py +100 -0
  129. novel_downloader/core/searchers/qbtr.py +106 -0
  130. novel_downloader/core/searchers/qianbi.py +74 -40
  131. novel_downloader/core/searchers/quanben5.py +144 -0
  132. novel_downloader/core/searchers/registry.py +24 -8
  133. novel_downloader/core/searchers/shuhaige.py +124 -0
  134. novel_downloader/core/searchers/tongrenquan.py +110 -0
  135. novel_downloader/core/searchers/ttkan.py +92 -0
  136. novel_downloader/core/searchers/xiaoshuowu.py +122 -0
  137. novel_downloader/core/searchers/xiguashuwu.py +95 -0
  138. novel_downloader/core/searchers/xs63b.py +104 -0
  139. novel_downloader/locales/en.json +34 -85
  140. novel_downloader/locales/zh.json +35 -86
  141. novel_downloader/models/__init__.py +21 -22
  142. novel_downloader/models/book.py +44 -0
  143. novel_downloader/models/config.py +4 -37
  144. novel_downloader/models/login.py +1 -1
  145. novel_downloader/models/search.py +5 -0
  146. novel_downloader/resources/config/settings.toml +8 -70
  147. novel_downloader/resources/json/xiguashuwu.json +718 -0
  148. novel_downloader/utils/__init__.py +13 -24
  149. novel_downloader/utils/chapter_storage.py +5 -5
  150. novel_downloader/utils/constants.py +4 -31
  151. novel_downloader/utils/cookies.py +38 -35
  152. novel_downloader/utils/crypto_utils/__init__.py +7 -0
  153. novel_downloader/utils/crypto_utils/aes_util.py +90 -0
  154. novel_downloader/utils/crypto_utils/aes_v1.py +619 -0
  155. novel_downloader/utils/crypto_utils/aes_v2.py +1143 -0
  156. novel_downloader/utils/crypto_utils/rc4.py +54 -0
  157. novel_downloader/utils/epub/__init__.py +3 -4
  158. novel_downloader/utils/epub/builder.py +6 -6
  159. novel_downloader/utils/epub/constants.py +62 -21
  160. novel_downloader/utils/epub/documents.py +95 -201
  161. novel_downloader/utils/epub/models.py +8 -22
  162. novel_downloader/utils/epub/utils.py +73 -106
  163. novel_downloader/utils/file_utils/__init__.py +2 -23
  164. novel_downloader/utils/file_utils/io.py +53 -188
  165. novel_downloader/utils/file_utils/normalize.py +1 -7
  166. novel_downloader/utils/file_utils/sanitize.py +4 -15
  167. novel_downloader/utils/fontocr/__init__.py +5 -14
  168. novel_downloader/utils/fontocr/core.py +216 -0
  169. novel_downloader/utils/fontocr/loader.py +50 -0
  170. novel_downloader/utils/logger.py +81 -65
  171. novel_downloader/utils/network.py +17 -41
  172. novel_downloader/utils/state.py +4 -90
  173. novel_downloader/utils/text_utils/__init__.py +1 -7
  174. novel_downloader/utils/text_utils/diff_display.py +5 -7
  175. novel_downloader/utils/text_utils/text_cleaner.py +39 -30
  176. novel_downloader/utils/text_utils/truncate_utils.py +3 -14
  177. novel_downloader/utils/time_utils/__init__.py +5 -11
  178. novel_downloader/utils/time_utils/datetime_utils.py +20 -29
  179. novel_downloader/utils/time_utils/sleep_utils.py +55 -49
  180. novel_downloader/web/__init__.py +13 -0
  181. novel_downloader/web/components/__init__.py +11 -0
  182. novel_downloader/web/components/navigation.py +35 -0
  183. novel_downloader/web/main.py +66 -0
  184. novel_downloader/web/pages/__init__.py +17 -0
  185. novel_downloader/web/pages/download.py +78 -0
  186. novel_downloader/web/pages/progress.py +147 -0
  187. novel_downloader/web/pages/search.py +329 -0
  188. novel_downloader/web/services/__init__.py +17 -0
  189. novel_downloader/web/services/client_dialog.py +164 -0
  190. novel_downloader/web/services/cred_broker.py +113 -0
  191. novel_downloader/web/services/cred_models.py +35 -0
  192. novel_downloader/web/services/task_manager.py +264 -0
  193. novel_downloader-2.0.1.dist-info/METADATA +172 -0
  194. novel_downloader-2.0.1.dist-info/RECORD +206 -0
  195. {novel_downloader-1.5.0.dist-info → novel_downloader-2.0.1.dist-info}/entry_points.txt +1 -1
  196. novel_downloader/core/downloaders/biquge.py +0 -29
  197. novel_downloader/core/downloaders/esjzone.py +0 -29
  198. novel_downloader/core/downloaders/linovelib.py +0 -29
  199. novel_downloader/core/downloaders/sfacg.py +0 -29
  200. novel_downloader/core/downloaders/yamibo.py +0 -29
  201. novel_downloader/core/exporters/biquge.py +0 -22
  202. novel_downloader/core/exporters/esjzone.py +0 -22
  203. novel_downloader/core/exporters/qianbi.py +0 -22
  204. novel_downloader/core/exporters/sfacg.py +0 -22
  205. novel_downloader/core/exporters/yamibo.py +0 -22
  206. novel_downloader/core/fetchers/base/__init__.py +0 -14
  207. novel_downloader/core/fetchers/base/browser.py +0 -422
  208. novel_downloader/core/fetchers/biquge/__init__.py +0 -14
  209. novel_downloader/core/fetchers/esjzone/__init__.py +0 -14
  210. novel_downloader/core/fetchers/esjzone/browser.py +0 -209
  211. novel_downloader/core/fetchers/linovelib/__init__.py +0 -14
  212. novel_downloader/core/fetchers/linovelib/browser.py +0 -198
  213. novel_downloader/core/fetchers/qianbi/__init__.py +0 -14
  214. novel_downloader/core/fetchers/qidian/__init__.py +0 -14
  215. novel_downloader/core/fetchers/qidian/browser.py +0 -326
  216. novel_downloader/core/fetchers/sfacg/__init__.py +0 -14
  217. novel_downloader/core/fetchers/sfacg/browser.py +0 -194
  218. novel_downloader/core/fetchers/yamibo/__init__.py +0 -14
  219. novel_downloader/core/fetchers/yamibo/browser.py +0 -234
  220. novel_downloader/core/parsers/biquge.py +0 -139
  221. novel_downloader/core/parsers/qidian/book_info_parser.py +0 -90
  222. novel_downloader/core/parsers/qidian/chapter_encrypted.py +0 -528
  223. novel_downloader/core/parsers/qidian/chapter_normal.py +0 -157
  224. novel_downloader/core/parsers/qidian/chapter_router.py +0 -68
  225. novel_downloader/core/parsers/qidian/utils/helpers.py +0 -114
  226. novel_downloader/models/chapter.py +0 -25
  227. novel_downloader/models/types.py +0 -13
  228. novel_downloader/tui/__init__.py +0 -7
  229. novel_downloader/tui/app.py +0 -32
  230. novel_downloader/tui/main.py +0 -17
  231. novel_downloader/tui/screens/__init__.py +0 -14
  232. novel_downloader/tui/screens/home.py +0 -198
  233. novel_downloader/tui/screens/login.py +0 -74
  234. novel_downloader/tui/styles/home_layout.tcss +0 -79
  235. novel_downloader/tui/widgets/richlog_handler.py +0 -24
  236. novel_downloader/utils/cache.py +0 -24
  237. novel_downloader/utils/crypto_utils.py +0 -71
  238. novel_downloader/utils/fontocr/hash_store.py +0 -280
  239. novel_downloader/utils/fontocr/hash_utils.py +0 -103
  240. novel_downloader/utils/fontocr/model_loader.py +0 -69
  241. novel_downloader/utils/fontocr/ocr_v1.py +0 -315
  242. novel_downloader/utils/fontocr/ocr_v2.py +0 -764
  243. novel_downloader/utils/fontocr/ocr_v3.py +0 -744
  244. novel_downloader-1.5.0.dist-info/METADATA +0 -196
  245. novel_downloader-1.5.0.dist-info/RECORD +0 -164
  246. {novel_downloader-1.5.0.dist-info → novel_downloader-2.0.1.dist-info}/WHEEL +0 -0
  247. {novel_downloader-1.5.0.dist-info → novel_downloader-2.0.1.dist-info}/licenses/LICENSE +0 -0
  248. {novel_downloader-1.5.0.dist-info → novel_downloader-2.0.1.dist-info}/top_level.txt +0 -0
@@ -1,196 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: novel-downloader
3
- Version: 1.5.0
4
- Summary: A command-line tool for downloading Chinese web novels from Qidian and similar platforms.
5
- Author-email: Saudade Z <saudadez217@gmail.com>
6
- License: MIT License
7
-
8
- Copyright (c) 2025 Saudade Z
9
-
10
- Permission is hereby granted, free of charge, to any person obtaining a copy
11
- of this software and associated documentation files (the "Software"), to deal
12
- in the Software without restriction, including without limitation the rights
13
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
- copies of the Software, and to permit persons to whom the Software is
15
- furnished to do so, subject to the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be included in all
18
- copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
- SOFTWARE.
27
-
28
- Project-URL: Homepage, https://github.com/BowenZ217/novel-downloader
29
- Project-URL: Source, https://github.com/BowenZ217/novel-downloader
30
- Keywords: novel,web novel,qidian,biquge,downloader,parser,fiction,cli,automation,ebook
31
- Classifier: Development Status :: 3 - Alpha
32
- Classifier: Environment :: Console
33
- Classifier: License :: OSI Approved :: MIT License
34
- Classifier: Natural Language :: Chinese (Simplified)
35
- Classifier: Topic :: Utilities
36
- Classifier: Programming Language :: Python :: 3
37
- Classifier: Programming Language :: Python :: 3.11
38
- Classifier: Programming Language :: Python :: 3.12
39
- Classifier: Programming Language :: Python :: 3.13
40
- Requires-Python: >=3.11
41
- Description-Content-Type: text/markdown
42
- License-File: LICENSE
43
- Requires-Dist: textual
44
- Requires-Dist: requests
45
- Requires-Dist: aiohttp
46
- Requires-Dist: playwright
47
- Requires-Dist: lxml
48
- Requires-Dist: platformdirs
49
- Provides-Extra: dev
50
- Requires-Dist: black; extra == "dev"
51
- Requires-Dist: mypy; extra == "dev"
52
- Requires-Dist: ruff; extra == "dev"
53
- Requires-Dist: pytest; extra == "dev"
54
- Requires-Dist: pytest-cov; extra == "dev"
55
- Requires-Dist: pytest-mock; extra == "dev"
56
- Requires-Dist: types-requests; extra == "dev"
57
- Requires-Dist: types-lxml; extra == "dev"
58
- Requires-Dist: types-PyYAML; extra == "dev"
59
- Requires-Dist: pre-commit; extra == "dev"
60
- Requires-Dist: commitizen; extra == "dev"
61
- Provides-Extra: font-recovery
62
- Requires-Dist: scipy; extra == "font-recovery"
63
- Requires-Dist: numpy; extra == "font-recovery"
64
- Requires-Dist: tinycss2; extra == "font-recovery"
65
- Requires-Dist: fonttools; extra == "font-recovery"
66
- Requires-Dist: brotli; extra == "font-recovery"
67
- Requires-Dist: opencv-python; extra == "font-recovery"
68
- Requires-Dist: pillow; extra == "font-recovery"
69
- Requires-Dist: huggingface_hub; extra == "font-recovery"
70
- Dynamic: license-file
71
-
72
- # novel-downloader
73
-
74
- 一个基于 [playwright](https://playwright.dev/) 和 [aiohttp](https://github.com/aio-libs/aiohttp) 的小说下载工具/库。
75
-
76
- > 本项目开发环境为 Python 3.12, 需确保运行环境为 Python 3.11 及以上版本
77
-
78
- ## 功能特性
79
-
80
- - 支持断点续爬, 自动续传未完成任务
81
- - 自动整合所有章节并导出为:
82
- - TXT
83
- - EPUB (可选包含章节插图)
84
- - 支持活动广告过滤:
85
- - [x] 章节标题
86
- - [x] 章节正文
87
-
88
- ---
89
-
90
- ## 快速开始
91
-
92
- ### 安装
93
-
94
- 使用 `pip` 安装:
95
-
96
- ```bash
97
- pip install novel-downloader
98
- ```
99
-
100
- 如需使用浏览器模式 (即 `mode: browser`), 请确保已安装 Playwright 依赖:
101
-
102
- ```bash
103
- playwright install
104
- ```
105
-
106
- 如需启用字体解密功能 (`decode_font`, 用于处理起点中文网对近一个月更新章节所采用的字体混淆技术), 请使用扩展安装方式:
107
-
108
- ```bash
109
- pip install novel-downloader[font-recovery]
110
- ```
111
-
112
- - 详细可见: [安装](https://github.com/BowenZ217/novel-downloader/blob/main/docs/1-installation.md)
113
-
114
- ---
115
-
116
- ### CLI 模式
117
-
118
- ```bash
119
- # 初始化默认配置 (生成 settings.toml)
120
- novel-cli config init
121
-
122
- # 编辑 ./settings.toml 完成 site/book_ids 等
123
- # 可查看 docs/3-settings-schema.md
124
-
125
- # 执行下载任务
126
- novel-cli download 123456
127
- ```
128
-
129
- - 详细可见: [支持站点列表](https://github.com/BowenZ217/novel-downloader/blob/main/docs/4-supported-sites.md)
130
- - 更多使用方法, 查看 [使用示例](https://github.com/BowenZ217/novel-downloader/blob/main/docs/6-cli-usage-examples.md)
131
-
132
- ---
133
-
134
- ### TUI 模式 (终端用户界面)
135
-
136
- **注意**: TUI 模式仍在开发中, 目前尚未实现登录和修改设置等功能。建议优先使用稳定的 CLI 模式。
137
-
138
- ```bash
139
- # 初始化默认配置 (生成 settings.toml)
140
- novel-cli config init
141
-
142
- # 编辑 ./settings.toml 修改网络配置
143
- # 可查看 docs/3-settings-schema.md
144
-
145
- # 启动 TUI 界面
146
- novel-tui
147
- ```
148
-
149
- - 详细可见: [支持站点列表](https://github.com/BowenZ217/novel-downloader/blob/main/docs/4-supported-sites.md)
150
- - 更多使用方法, 查看 [使用示例](https://github.com/BowenZ217/novel-downloader/blob/main/docs/5-tui-usage-examples.md)
151
-
152
- ---
153
-
154
- ### GUI 模式 (图形界面)
155
-
156
- 尚未实现
157
-
158
- ---
159
-
160
- ## 从 GitHub 安装 (开发版)
161
-
162
- 如需体验开发中的最新功能, 可通过 GitHub 安装:
163
-
164
- ```bash
165
- git clone https://github.com/BowenZ217/novel-downloader.git
166
- cd novel-downloader
167
- pip install .
168
- # 或安装带可选功能:
169
- # pip install .[font-recovery]
170
- ```
171
-
172
- ---
173
-
174
- ## 文档结构
175
-
176
- - [项目简介](#项目简介)
177
- - [安装](https://github.com/BowenZ217/novel-downloader/blob/main/docs/1-installation.md)
178
- - [配置](https://github.com/BowenZ217/novel-downloader/blob/main/docs/2-configuration.md)
179
- - [settings.toml 配置说明](https://github.com/BowenZ217/novel-downloader/blob/main/docs/3-settings-schema.md)
180
- - [支持站点列表](https://github.com/BowenZ217/novel-downloader/blob/main/docs/4-supported-sites.md)
181
- - [TUI 使用示例](https://github.com/BowenZ217/novel-downloader/blob/main/docs/5-tui-usage-examples.md)
182
- - [CLI 使用示例](https://github.com/BowenZ217/novel-downloader/blob/main/docs/6-cli-usage-examples.md)
183
- - [复制 Cookies](https://github.com/BowenZ217/novel-downloader/blob/main/docs/copy-cookies.md)
184
- - [文件保存](https://github.com/BowenZ217/novel-downloader/blob/main/docs/file-saving.md)
185
- - [模块与接口文档](https://github.com/BowenZ217/novel-downloader/blob/main/docs/api/README.md)
186
- - [TODO](https://github.com/BowenZ217/novel-downloader/blob/main/docs/todo.md)
187
- - [开发](https://github.com/BowenZ217/novel-downloader/blob/main/docs/develop.md)
188
- - [项目说明](#项目说明)
189
-
190
- ---
191
-
192
- ## 项目说明
193
-
194
- - 本项目仅供学习和研究使用, 不得用于任何商业或违法用途。请遵守目标网站的 robots.txt 以及相关法律法规。
195
- - 本项目开发者对因使用该工具所引起的任何法律责任不承担任何责任。
196
- - 如果遇到网站结构变化或其他问题, 可能导致程序无法正常工作, 请自行调整代码或寻找其他解决方案。
@@ -1,164 +0,0 @@
1
- novel_downloader/__init__.py,sha256=SIm_swXHzLDHFQcQUzFPB-cv_f_HLvvthF5sfTlkNG4,218
2
- novel_downloader/cli/__init__.py,sha256=QMtpA-QIdW1VAaEYIVGkuLFp0yRpacbttiLz02QsBAM,174
3
- novel_downloader/cli/clean.py,sha256=hOk8SJQwBCw2oOObTdEI79wpnmZ25uB1s9LQK1-4LNU,4487
4
- novel_downloader/cli/config.py,sha256=S1c-76mqIc9UEtASuSqsChmvvv-btnphmhOf43TVIZ4,3262
5
- novel_downloader/cli/download.py,sha256=0fX3dZE-163i0q8lBLkz0QUBLRkl9AfWnuGOmCFrXfs,6791
6
- novel_downloader/cli/export.py,sha256=Mm3CPva_gE4KSUfuetFBbCB6E8prE4kHHj9UqPCBFas,2410
7
- novel_downloader/cli/main.py,sha256=fipNkrT1Vj8owroOcadwarA81eMRSnCs1rhB6Ypt_9c,1009
8
- novel_downloader/cli/search.py,sha256=Iw59yZwGugKq9lZgxEkKoEnOA1IPgCOCqmdaqoxhtVE,3405
9
- novel_downloader/config/__init__.py,sha256=qgOTCPNGmmnMRU0kn9w-ZPFf_dmyfKRZabxb49GUaag,475
10
- novel_downloader/config/adapter.py,sha256=HwLKxFd-dle2uN0HPyzNmqiGyBGQ0uZs2-jwU1PTwvk,13456
11
- novel_downloader/config/loader.py,sha256=bzZVwwDKwHMjtsQKKXhlOiiI0PG5t1UKKr4Ddkm-fjk,5742
12
- novel_downloader/core/__init__.py,sha256=bx_UGagwvQxGOuXr1ewBDmoPfOZFTV5G9zi0HkYAuwg,1079
13
- novel_downloader/core/downloaders/__init__.py,sha256=FG-HqP0067APoOk5eqwCgAyFyA_nKAfkqQDcd_IMdmE,1038
14
- novel_downloader/core/downloaders/base.py,sha256=xAQTaaPR8jcGrD8bwo_Ezkwr5-UTVNLKpS3XCNiNXXU,10839
15
- novel_downloader/core/downloaders/biquge.py,sha256=-1TR0MS8VvX4UcJ9U4_oSmxtVN-XBtWbV_gAaS_EBfM,759
16
- novel_downloader/core/downloaders/common.py,sha256=jm93XTSRFL89kOMWkzDGFJpHklNQcVhw_7Q3n5BuFg0,7468
17
- novel_downloader/core/downloaders/esjzone.py,sha256=5DFwXEQUHHSR1fTF8gY9zvuWLXIQqKPvPopuSQa_jQg,747
18
- novel_downloader/core/downloaders/linovelib.py,sha256=xQFy1WZ4f1lSVMD5jFvTV5MexVksS5TUPsEH5rSdXbY,776
19
- novel_downloader/core/downloaders/qianbi.py,sha256=IeetEHnSj5XVPWC5oFYJCfzx8a6QHXD36ko-JzZTGyQ,10338
20
- novel_downloader/core/downloaders/qidian.py,sha256=UOzO_RQhMVlROTd_P8q5g6IZ-COqcxwWHdu5a7rwTyY,9784
21
- novel_downloader/core/downloaders/registry.py,sha256=CUc7SVdk9dfT34B4ggtNH39Pmk2CknWXPHxlnwnT2cQ,1742
22
- novel_downloader/core/downloaders/sfacg.py,sha256=QX6eGhBoLSG1-Xlp-Tk6V4cC8jO-eX0CuDLXdKN6gKM,749
23
- novel_downloader/core/downloaders/yamibo.py,sha256=s69T5sE8Un2NsZ0mhRJhVs7nWFTrVm85MbqQBsmSHEI,752
24
- novel_downloader/core/exporters/__init__.py,sha256=lpoRD5nnMLWBfy--0MaU2AFgJR4znC3NFb_YtkJ7qv0,841
25
- novel_downloader/core/exporters/base.py,sha256=HEpSkOo9Uxz5rzicQ3UIk697TRrgj3ZBpO9_E3V2mgM,8742
26
- novel_downloader/core/exporters/biquge.py,sha256=nEurX2XcwlnMj1GudDea-1Aqk1PTXSX1AzRycVBUqbY,506
27
- novel_downloader/core/exporters/epub_util.py,sha256=hN4BixHcAB9SnLkLN-6nnqr3r5CKvwMhI1Ensblfltg,5167
28
- novel_downloader/core/exporters/esjzone.py,sha256=WSUkDfsLZ2EaBMI-TtFBuC0bFxvpvZJO6ZokclGcoQU,505
29
- novel_downloader/core/exporters/qianbi.py,sha256=ceq4S87UrvZDaFcOl6glO6IJuVcCR3hsbQCtyfa55Zc,499
30
- novel_downloader/core/exporters/qidian.py,sha256=GvpY5JlGQbC9r1DJlBwFD3hrTjIjQcaO9BmF88g5ATQ,983
31
- novel_downloader/core/exporters/registry.py,sha256=9McaEeGZa7Adjk9qafNQA6_QaPFRQGEFrgvYqtDGMoY,1431
32
- novel_downloader/core/exporters/sfacg.py,sha256=hJq3yy0zHn08q8NbCc1fLZOWuzjongth-wBp0nqcx2Q,493
33
- novel_downloader/core/exporters/txt_util.py,sha256=LrffCEB8Qnbe6Db6IIUfs3erfwzMgCNCsWFFboWTxBA,1985
34
- novel_downloader/core/exporters/yamibo.py,sha256=V9U7cHbWykM45Py0lU2MMKDwWqwO-BdHZE_yrLt9Rlw,499
35
- novel_downloader/core/exporters/common/__init__.py,sha256=qublXdulyhYQOZFE-rjDicS-3-dDWBgl4iYy8pj_NPg,274
36
- novel_downloader/core/exporters/common/epub.py,sha256=1hANj0h004eTb1dpH0ZPCpVmEzwmsAJAXVINjoNa6_M,5781
37
- novel_downloader/core/exporters/common/main_exporter.py,sha256=skkl-ClFXVzIGqdtQxuH78O0KZvXL4YKRP5Z_KCMJEg,2105
38
- novel_downloader/core/exporters/common/txt.py,sha256=aGB1xL9zWfqV2mlaSgAMcxB3JRdAq2Y4Dxf-ElxX4xQ,4709
39
- novel_downloader/core/exporters/linovelib/__init__.py,sha256=PgmtYx6t8YpPl5Dhqq7lgkqz5btyj_XUrOjnJOfSQLU,195
40
- novel_downloader/core/exporters/linovelib/epub.py,sha256=xCKwSEgZciIVgXzZgdP1YzRM4QYzVEkkIAvAF3CWydE,10615
41
- novel_downloader/core/exporters/linovelib/main_exporter.py,sha256=2IlnxgH64v9CrU6GsBTPHJ1oYXBTxCOZKSLzBm1VD-w,2050
42
- novel_downloader/core/exporters/linovelib/txt.py,sha256=TWAQ5ZCDgBqrKktivEgDmuEZEgmi5ogG4i-a0zDXfHQ,4343
43
- novel_downloader/core/fetchers/__init__.py,sha256=iHWGP1IHWIe7RutcSVl_cQM7bxmC6skeEvOJU5ck_yM,1365
44
- novel_downloader/core/fetchers/registry.py,sha256=3tCP1Ubcbm6BBYbi3PPO0A1l75DXpk64z7OZ159Loo4,1915
45
- novel_downloader/core/fetchers/base/__init__.py,sha256=URfwFQG16FkRkYSgoyf9t-enoM2j_aEZgAHkOIKPgRY,224
46
- novel_downloader/core/fetchers/base/browser.py,sha256=mUbpoAiss5XLX4k9YK9YAMAWtxy2_ZCCnnJpm9LrW0Q,12398
47
- novel_downloader/core/fetchers/base/rate_limiter.py,sha256=zUYH_PjnKfUzJpcbUPtMkwXxIlF0SH-ZTFlbCUrq060,2724
48
- novel_downloader/core/fetchers/base/session.py,sha256=igtIzGYgxRwcQC4SJD5y6Xt1xV_VUF2YqsYc4AV9Mo4,13957
49
- novel_downloader/core/fetchers/biquge/__init__.py,sha256=HtTYA5ftmdG8ss23C0aVd9XpMXPUw9jYyHVWcitqdWA,236
50
- novel_downloader/core/fetchers/biquge/browser.py,sha256=zt1_ZjSdzcTpPVQKCxym-zN5G6nkQiBxsgG9ILxEd3M,2539
51
- novel_downloader/core/fetchers/biquge/session.py,sha256=5JpxTbVRKENtKk5tbmq8uWqudriNGKxePjzAefXNvgk,2565
52
- novel_downloader/core/fetchers/esjzone/__init__.py,sha256=p9oILNGkK_4OlPKeN64aRHh9yuNJO3JUzQ2H9qGfhXg,242
53
- novel_downloader/core/fetchers/esjzone/browser.py,sha256=2RSHnG90eWATo0Y_PQj0bchD8zmYLvtIIqXzaTz1qW8,6421
54
- novel_downloader/core/fetchers/esjzone/session.py,sha256=P-z-sonyvubO8SZqCl9ImruxjE_yRdZg4BJ9azm9dPU,7350
55
- novel_downloader/core/fetchers/linovelib/__init__.py,sha256=DdnfWgy_6XW1iaI1d5BBNwX8bizrmF-Vj3LrGy6q41c,254
56
- novel_downloader/core/fetchers/linovelib/browser.py,sha256=JsUbfpMHiFEeF5Cl268l6nL9jUpqJH78t0kQ2INJJ8E,6220
57
- novel_downloader/core/fetchers/linovelib/session.py,sha256=y3ISDrFPJy7O9tZYP09ctw0JlfzsJEe6NMPRgbnTsoc,6230
58
- novel_downloader/core/fetchers/qianbi/__init__.py,sha256=bu2lH43Lclku6Fm60q8p9j3f5eijyyXmTKUxcO-82U0,236
59
- novel_downloader/core/fetchers/qianbi/browser.py,sha256=HsW6DY2fAJDG1V6h6owlLP-GmGR--iu_UTHWSo6OIi4,3304
60
- novel_downloader/core/fetchers/qianbi/session.py,sha256=B85N21hrtn1DWErumLAN3IJNzRKFT-8dgVCNE3Mr2f8,3283
61
- novel_downloader/core/fetchers/qidian/__init__.py,sha256=C4mfhryEleBO8D9eMJW_WVS9-7wg_9-eME0SQCezoBk,236
62
- novel_downloader/core/fetchers/qidian/browser.py,sha256=qu3JBSBWS9VLWbz-LXHHksrZ7idIv2Gik9DeHPLlaus,10726
63
- novel_downloader/core/fetchers/qidian/session.py,sha256=rSMwS8Ds2RiKySoyR8CUXMrlZrzFOLUSmTyMcNIK8Rg,9966
64
- novel_downloader/core/fetchers/sfacg/__init__.py,sha256=aRvY8SFPhr3Kg5EX2MeXoMZh9oNomD4fqzIo1PK-mwc,230
65
- novel_downloader/core/fetchers/sfacg/browser.py,sha256=U-ASxhiwNuDygNwBvwFcfA9hQweeReOmc8hjouUcLjE,5822
66
- novel_downloader/core/fetchers/sfacg/session.py,sha256=rmFocT_g6Co0jrM2TDXIMIkuF6gSADTfXNdmu7Lb1eg,5226
67
- novel_downloader/core/fetchers/yamibo/__init__.py,sha256=0_9xSGNEEYVgVM6A9ZQpSIrcjmuSGQI_XMg4EmP9dvI,236
68
- novel_downloader/core/fetchers/yamibo/browser.py,sha256=0nirnzAZZxt77gW4fQ5oUoCziALigbZaCwuMbEPQ_RI,7407
69
- novel_downloader/core/fetchers/yamibo/session.py,sha256=qmrHZ4h8IeeqobfJPIpNDNkIw3tzSmjlklcparoQ6ys,7343
70
- novel_downloader/core/interfaces/__init__.py,sha256=BS-0upPeUmJofNnhP-eiYiYT2IGnfBQDUILqXqbomfc,665
71
- novel_downloader/core/interfaces/downloader.py,sha256=H0S4o5MW22JcvNVECv1bCdwAN0drBwHY31IbvVHn-X0,1557
72
- novel_downloader/core/interfaces/exporter.py,sha256=zwIaJ5FXo_JmKYg2UZV9FTWX7xZ2e0QuL4RTNGRtI04,1610
73
- novel_downloader/core/interfaces/fetcher.py,sha256=XlP3d-Q_xvuVextZCdLOxDf8BwBbx799L_WLJx0WTB8,4096
74
- novel_downloader/core/interfaces/parser.py,sha256=iZeUgNl-zE-wsf1eW4GVCPjEaLSvQrNJi_mVEOU9ulY,1353
75
- novel_downloader/core/interfaces/searcher.py,sha256=KUgkyDndFDVd65aSA2S8Y_FLmtla5DRX3eSQ5Ebxi5E,363
76
- novel_downloader/core/parsers/__init__.py,sha256=XrIsgXFKaHdiggC6Pn5tWsh8Wo5syQJDWfJLkW-qcjY,806
77
- novel_downloader/core/parsers/base.py,sha256=GifJANFm0auYyzYuqYox9LFgDskW8G2vR0DaMrRcG1w,2962
78
- novel_downloader/core/parsers/biquge.py,sha256=HfZfLhvGmY7WATXuwN5MjMKadpLh7d5FvBUwc5D5slc,4705
79
- novel_downloader/core/parsers/esjzone.py,sha256=UbhbH_ZdMriBjw97esdUgUI2Mj5kaJl85euSWU4GE5U,8647
80
- novel_downloader/core/parsers/linovelib.py,sha256=tDKS097ybcGS9BgjOmKoVNv2bfHsGzVRpJvkevOYZNo,7694
81
- novel_downloader/core/parsers/qianbi.py,sha256=kSnDgC-jCJmg4pWTXcFHbaucLxrgw0ZXI04pohU7J3Q,5195
82
- novel_downloader/core/parsers/registry.py,sha256=wpdEp2I881BlO2V6KcpoO8TdFDqoe8o1ppY7tiu2nDY,1869
83
- novel_downloader/core/parsers/sfacg.py,sha256=kHsfMgl78IUX70KQGSQrpIVdU6LdlZeHICRupb6QFc4,6024
84
- novel_downloader/core/parsers/yamibo.py,sha256=JcSJcZyiCfXq1blGTCuoIoWhOpTYOUH9T34Z-1ZCA9s,6680
85
- novel_downloader/core/parsers/qidian/__init__.py,sha256=ScY9penE8b1m5HZGu6C1XwbzuqKbeGVCvli0J-xzzKs,173
86
- novel_downloader/core/parsers/qidian/book_info_parser.py,sha256=TbP8nghoxzBi435cSJKAzWttBRUq49MHw6kn0klfZrU,3056
87
- novel_downloader/core/parsers/qidian/chapter_encrypted.py,sha256=zdZArGNGADXiwhikSyp3UZ7RLNOAaobldZuTzMWTjL4,18494
88
- novel_downloader/core/parsers/qidian/chapter_normal.py,sha256=Hq8PuUsa8d-GB5VYvsi3Rpymut9dOJ_MQKzWkENBXwE,4727
89
- novel_downloader/core/parsers/qidian/chapter_router.py,sha256=foVMlWtE-qUOvJD_4EDiuAVaNkFdeV_ZTCvS5IL7Orc,1957
90
- novel_downloader/core/parsers/qidian/main_parser.py,sha256=lwzcrhiQCd9SRBQnKHilce1BSmkvfzP3HHZNgPX1swY,3928
91
- novel_downloader/core/parsers/qidian/utils/__init__.py,sha256=aYjFuY2ovAMdrHVZ-6o7GQNJq6SmwFEppx0n801B02A,588
92
- novel_downloader/core/parsers/qidian/utils/decryptor_fetcher.py,sha256=LJecMdwWlO9Z2Z8nk4f2QF3-rEWVv6sJoX2YRq_O11c,4686
93
- novel_downloader/core/parsers/qidian/utils/helpers.py,sha256=v64zTDQ6qbKnGXM7MPzCsS7yQ-w730vPVrDD19Bgx4Q,3514
94
- novel_downloader/core/parsers/qidian/utils/node_decryptor.py,sha256=MQQUI9nNpM23K0sA9bRVhs7pbQX6OvMc1NgvM28gHsU,5949
95
- novel_downloader/core/searchers/__init__.py,sha256=6CgH2VRUUCRnnhVSXKuih8bwL5inytRFuihTJQhtWok,386
96
- novel_downloader/core/searchers/base.py,sha256=05RsKGvTCdMr-D1xzD17VAcNxYrA2LI2EmAxOo7u7Dg,2544
97
- novel_downloader/core/searchers/biquge.py,sha256=ToudWrm9E07k5jnGZMzlzAAi9wgyiE02BxcUTExUgOM,2624
98
- novel_downloader/core/searchers/esjzone.py,sha256=d4EJNbYYEYR1bl6uH3G2r6M185Dwbohhnkeg1T_BwMc,2740
99
- novel_downloader/core/searchers/qianbi.py,sha256=LGX0DHdsCBj_zp79eSmxGBE0ONKb763GZ2PMQv_XKzo,4243
100
- novel_downloader/core/searchers/qidian.py,sha256=9gEwq4ildh4fTiyqMeqxQdoLaTj4d4gmYfVzRX95eLg,2712
101
- novel_downloader/core/searchers/registry.py,sha256=ud9vW4mV3H1-k9iK3LHT-aYAMSAClCY5SsDcq-kZkH0,1874
102
- novel_downloader/locales/en.json,sha256=eHSK2hHXRJY8d2voMoBhYqmBmjU94wKRwm4j3CTEOEI,7458
103
- novel_downloader/locales/zh.json,sha256=OB-VeUIdOBMfL4kZQWNl_XN_91vmimGIzYC-OLMoWgE,7252
104
- novel_downloader/models/__init__.py,sha256=iwKxN4kAh442wPgZxKXQRig1PQthD3Az263Y60ICaik,672
105
- novel_downloader/models/chapter.py,sha256=bdAQUDZIuuTVxoYjoOJrbS2u81b1B2mkuZkTSf0m2HQ,492
106
- novel_downloader/models/config.py,sha256=3BFEnxlOWQztJb5tEvPEkpf6P0L5H7ib4XiWXNBAQGQ,3299
107
- novel_downloader/models/login.py,sha256=sY2Jom6PLpA9Z3Uy7plZKhda3Gq7awKOOIIaQ79PpWs,371
108
- novel_downloader/models/search.py,sha256=jC-ACdF4YvWw3v9E-oFyb_rgOg1T67CuubdEHXjw1_k,249
109
- novel_downloader/models/types.py,sha256=hQI1o_xnFcO75Uh6xC9D6SsNHUapaJoEGOeEOqb8LvA,311
110
- novel_downloader/resources/config/settings.toml,sha256=MyiZ4uGMEzb1KuAOoJV1hnwOQxGpjfzBUs17j0to_p8,5012
111
- novel_downloader/resources/css_styles/intro.css,sha256=Nqzp-A5we92d90CCiGL8h2FeuMnCz-G0TLevMF_Pl2U,1271
112
- novel_downloader/resources/css_styles/main.css,sha256=1nsDTr698eY3furWDHuQMDKP1Vqd2h5x40eJMZpktNE,559
113
- novel_downloader/resources/images/volume_border.png,sha256=2dEVimnTHKOfLMhi7bhkh_5joWNnrqg8duomLSNOZx4,28613
114
- novel_downloader/resources/js_scripts/qidian_decrypt_node.js,sha256=spNrk_gXI7pPW9abr4XGc2LASMe1UuN4BUe4cH24L8s,2195
115
- novel_downloader/resources/json/linovelib_font_map.json,sha256=F1IlEcvXGcagnZCu4Gw2vQ2NLnhy6cJOLhabukqnftw,67854
116
- novel_downloader/tui/__init__.py,sha256=8RB8tBrPcoBzm1tpQlgZqnOZXrdHmlzMRxuk9wsN4m0,115
117
- novel_downloader/tui/app.py,sha256=ytV1u15nGCRj_ff_GeAL3W1XlU6r5Lh_k3HBcAjPRx0,731
118
- novel_downloader/tui/main.py,sha256=MBP8SrwEYTpGQm-V9W_4rKnTeslneORfkzFsU3Xj2yA,256
119
- novel_downloader/tui/screens/__init__.py,sha256=QsUM5cUEKm7nluQh9acEt37xRWbkZU3vqIpBduepDCU,203
120
- novel_downloader/tui/screens/home.py,sha256=nH3pRuCOFcSvNV4AYC6RRkWpphmRgY1bNK36OkSVfCg,6994
121
- novel_downloader/tui/screens/login.py,sha256=GK8dXCtH5lGu3ilT1Cv2VmFCwHMspDNpzw0logj2lz0,2225
122
- novel_downloader/tui/styles/home_layout.tcss,sha256=VNJs339qiwNUuqwwdK6VkYThCdsqlw-2mEoZVCspdrw,974
123
- novel_downloader/tui/widgets/richlog_handler.py,sha256=bhFb0E7Z7-dRS07y_vMjxjPeCic9AD59MFPLhef_R5g,572
124
- novel_downloader/utils/__init__.py,sha256=cr74_8UmCYV7GOLGq-25WE1om9kWCDkWVFvklUEw4HM,1180
125
- novel_downloader/utils/cache.py,sha256=_jVEWAaMGY86kWVnAuuIvJA_hA8dH2ClI7o3p99mEvE,618
126
- novel_downloader/utils/chapter_storage.py,sha256=gRjNvGD9vnd86rmjvNRlZllvJv0PY3CojLeAafHNqPI,10360
127
- novel_downloader/utils/constants.py,sha256=MVNwKBy0iw0ipA_kn8Zjih9gbvB3szDvoiKxg_u-t5w,3990
128
- novel_downloader/utils/cookies.py,sha256=WuPBt_z7cF4n7QPIw1julATWt6dbDRCbNdgXHSikmjo,2042
129
- novel_downloader/utils/crypto_utils.py,sha256=BRlVR9Nvbu8TQXocJb3po1-kD5HkbCV0yyT84nq_XtI,2052
130
- novel_downloader/utils/i18n.py,sha256=86Wz4zT0_YTnmOSS6cliqO_uMgJJdfC-hNLyqZnXgvU,1050
131
- novel_downloader/utils/logger.py,sha256=k5m7XV0Ht1nnAnUTNTHL3DQXz5iyZ02tRnmDa83r_GE,3368
132
- novel_downloader/utils/network.py,sha256=6hK1leSOfTvw4teeSZ98eV09A5Rf2CG75UaAuEJY6RY,4677
133
- novel_downloader/utils/state.py,sha256=jDgpZJQFgbnJiStmqGRjLzg6y9f49e5fmg4CJD2r_es,5133
134
- novel_downloader/utils/epub/__init__.py,sha256=RRZGcGrefgQXbbLkPCtn3FklbkXxyhnh60R5a--XlcY,718
135
- novel_downloader/utils/epub/builder.py,sha256=apuzG7UzYcEEreMpf9Dez06-laQQg6EGGvl3PQGpBFA,11664
136
- novel_downloader/utils/epub/constants.py,sha256=0ERCwUwUH5lE51-D0egP3WEjHK4AQZsQv17s8lHg-kI,2124
137
- novel_downloader/utils/epub/documents.py,sha256=SCvs1Z1F1kXRTpgrO6nl-izKJCihWC5tOXhU05KMsU4,12169
138
- novel_downloader/utils/epub/models.py,sha256=oSgup2yenYMHhp0jpS4u5XixaiQ5h3sjg1q6Y2uGLOo,2915
139
- novel_downloader/utils/epub/utils.py,sha256=hP8fMTioUDnEcqtQ7eF4Ofw62VDaMCix3h_TYIi57Yw,5874
140
- novel_downloader/utils/file_utils/__init__.py,sha256=qrASldzqPs64CHaxPFTvxYn75abb4sdyTavksPhGmo4,1051
141
- novel_downloader/utils/file_utils/io.py,sha256=mKfS9dDV5OVBK-2163GO2mk_2Lqw0mXX5iKmF1F1kEM,6483
142
- novel_downloader/utils/file_utils/normalize.py,sha256=v0ZRGcuZ9KMj0GTgAMPCwSBnYkEz8LCnW5dJYjf_jQk,2023
143
- novel_downloader/utils/file_utils/sanitize.py,sha256=sYMu7II8ebQVCwd5GzeLjBKKZNOxHXbyL6il8UGwlqo,2111
144
- novel_downloader/utils/fontocr/__init__.py,sha256=L_q0BkI1OnKoxp5NA0H191V5KwOwzRG6sAg60RKANRs,586
145
- novel_downloader/utils/fontocr/hash_store.py,sha256=a2j5icguKNKWKAsZNsjm_wEBz-RMe6ZY86cSjEyD88E,9447
146
- novel_downloader/utils/fontocr/hash_utils.py,sha256=UqEMvkbzVvv5NwBJBRMO_X6nMDgE7xF28vfGjVr0X-0,3039
147
- novel_downloader/utils/fontocr/model_loader.py,sha256=aBPZlwZ-rx2tDsWtN3BnB15vceqNkqTEBX1h2pMZf3E,2012
148
- novel_downloader/utils/fontocr/ocr_v1.py,sha256=4VApGfOuShCs_YqPozLQMXNHvJor2J5CJ3mwudK1Ixg,11689
149
- novel_downloader/utils/fontocr/ocr_v2.py,sha256=eIdtFwmoaK-bDdMnbIqF0qECyECDIHYTkWJcJZ5yBVc,27751
150
- novel_downloader/utils/fontocr/ocr_v3.py,sha256=4g22Sjja5ER-3pKxA4y49FLItTcIdhMSWepjKOJnsgw,27101
151
- novel_downloader/utils/text_utils/__init__.py,sha256=5-0aaY4M151vXMI1UyGXpOyuZ6cqtJLwvw0KgdTNRTk,885
152
- novel_downloader/utils/text_utils/diff_display.py,sha256=pbAPiYdvI_1nls5SNRWxJo0iDLS_A-sApA6uQnoV9es,2527
153
- novel_downloader/utils/text_utils/numeric_conversion.py,sha256=RJ3L5GBxgNEQYJ7xFoihLVsjGcObBfpUAk_Gz5MxlkA,6627
154
- novel_downloader/utils/text_utils/text_cleaner.py,sha256=9-Ymi6H9BDBv1Sjk2gE9fCG4G3A8Lut-n2sfAyeyH2I,6124
155
- novel_downloader/utils/text_utils/truncate_utils.py,sha256=GeQCczW0jAHSeDMxx0qCRtnvT-CH1-KjqJq2JBpIv7U,1483
156
- novel_downloader/utils/time_utils/__init__.py,sha256=VP0RYksrkswEAkFmBQmeshe5eTiQeJpkT2ZKK5UEErU,624
157
- novel_downloader/utils/time_utils/datetime_utils.py,sha256=8qXAMVU8txsFG3QF35JmCbvswE4JqEdqD5fiAS6psU0,4931
158
- novel_downloader/utils/time_utils/sleep_utils.py,sha256=vsx-p0X9xqjtXH6YSzA6aF81yEM_fz1JrOYLJOIrqaI,3232
159
- novel_downloader-1.5.0.dist-info/licenses/LICENSE,sha256=XgmnH0mBf-qEiizoVAfJQAKzPB9y3rBa-ni7M0Aqv4A,1066
160
- novel_downloader-1.5.0.dist-info/METADATA,sha256=LWu5kIhamrwC9I10s7v1HfOf_OGYPJyjstcBvVfUJy0,7253
161
- novel_downloader-1.5.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
162
- novel_downloader-1.5.0.dist-info/entry_points.txt,sha256=u1Ns5xI_QJyL4HAFCgJvJdib9ugu7M9I2tnQwZjJxrk,112
163
- novel_downloader-1.5.0.dist-info/top_level.txt,sha256=hP4jYWM2LTm1jxsW4hqEB8N0dsRvldO2QdhggJT917I,17
164
- novel_downloader-1.5.0.dist-info/RECORD,,