novel-downloader 1.4.0__tar.gz → 1.4.1__tar.gz

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 (175) hide show
  1. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/PKG-INFO +1 -1
  2. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/__init__.py +1 -1
  3. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/linovelib/browser.py +15 -0
  4. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/linovelib/session.py +15 -0
  5. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/PKG-INFO +1 -1
  6. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/pyproject.toml +1 -1
  7. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/LICENSE +0 -0
  8. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/README.md +0 -0
  9. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/__init__.py +0 -0
  10. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/clean.py +0 -0
  11. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/config.py +0 -0
  12. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/download.py +0 -0
  13. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/export.py +0 -0
  14. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/cli/main.py +0 -0
  15. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/config/__init__.py +0 -0
  16. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/config/adapter.py +0 -0
  17. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/config/loader.py +0 -0
  18. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/config/site_rules.py +0 -0
  19. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/__init__.py +0 -0
  20. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/__init__.py +0 -0
  21. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/base.py +0 -0
  22. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/biquge.py +0 -0
  23. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/common.py +0 -0
  24. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/esjzone.py +0 -0
  25. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/linovelib.py +0 -0
  26. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/qianbi.py +0 -0
  27. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/qidian.py +0 -0
  28. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/sfacg.py +0 -0
  29. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/downloaders/yamibo.py +0 -0
  30. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/__init__.py +0 -0
  31. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/base.py +0 -0
  32. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/biquge.py +0 -0
  33. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/common/__init__.py +0 -0
  34. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/common/epub.py +0 -0
  35. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/common/main_exporter.py +0 -0
  36. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/common/txt.py +0 -0
  37. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/__init__.py +0 -0
  38. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/css_builder.py +0 -0
  39. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/image_loader.py +0 -0
  40. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/initializer.py +0 -0
  41. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/text_to_html.py +0 -0
  42. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/epub_utils/volume_intro.py +0 -0
  43. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/esjzone.py +0 -0
  44. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/linovelib/__init__.py +0 -0
  45. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/linovelib/epub.py +0 -0
  46. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/linovelib/main_exporter.py +0 -0
  47. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/linovelib/txt.py +0 -0
  48. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/qianbi.py +0 -0
  49. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/qidian.py +0 -0
  50. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/sfacg.py +0 -0
  51. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/exporters/yamibo.py +0 -0
  52. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/factory/__init__.py +0 -0
  53. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/factory/downloader.py +0 -0
  54. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/factory/exporter.py +0 -0
  55. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/factory/fetcher.py +0 -0
  56. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/factory/parser.py +0 -0
  57. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/__init__.py +0 -0
  58. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/base/__init__.py +0 -0
  59. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/base/browser.py +0 -0
  60. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/base/rate_limiter.py +0 -0
  61. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/base/session.py +0 -0
  62. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/biquge/__init__.py +0 -0
  63. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/biquge/browser.py +0 -0
  64. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/biquge/session.py +0 -0
  65. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/common/__init__.py +0 -0
  66. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/common/browser.py +0 -0
  67. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/common/session.py +0 -0
  68. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/esjzone/__init__.py +0 -0
  69. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/esjzone/browser.py +0 -0
  70. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/esjzone/session.py +0 -0
  71. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/linovelib/__init__.py +0 -0
  72. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qianbi/__init__.py +0 -0
  73. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qianbi/browser.py +0 -0
  74. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qianbi/session.py +0 -0
  75. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qidian/__init__.py +0 -0
  76. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qidian/browser.py +0 -0
  77. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/qidian/session.py +0 -0
  78. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/sfacg/__init__.py +0 -0
  79. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/sfacg/browser.py +0 -0
  80. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/sfacg/session.py +0 -0
  81. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/yamibo/__init__.py +0 -0
  82. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/yamibo/browser.py +0 -0
  83. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/fetchers/yamibo/session.py +0 -0
  84. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/interfaces/__init__.py +0 -0
  85. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/interfaces/downloader.py +0 -0
  86. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/interfaces/exporter.py +0 -0
  87. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/interfaces/fetcher.py +0 -0
  88. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/interfaces/parser.py +0 -0
  89. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/__init__.py +0 -0
  90. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/base.py +0 -0
  91. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/biquge/__init__.py +0 -0
  92. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/biquge/main_parser.py +0 -0
  93. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/common/__init__.py +0 -0
  94. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/common/helper.py +0 -0
  95. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/common/main_parser.py +0 -0
  96. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/esjzone/__init__.py +0 -0
  97. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/esjzone/main_parser.py +0 -0
  98. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/linovelib/__init__.py +0 -0
  99. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/linovelib/main_parser.py +0 -0
  100. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qianbi/__init__.py +0 -0
  101. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qianbi/main_parser.py +0 -0
  102. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/__init__.py +0 -0
  103. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/book_info_parser.py +0 -0
  104. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/chapter_encrypted.py +0 -0
  105. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/chapter_normal.py +0 -0
  106. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/chapter_router.py +0 -0
  107. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/main_parser.py +0 -0
  108. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/utils/__init__.py +0 -0
  109. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/utils/decryptor_fetcher.py +0 -0
  110. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/utils/helpers.py +0 -0
  111. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/qidian/utils/node_decryptor.py +0 -0
  112. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/sfacg/__init__.py +0 -0
  113. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/sfacg/main_parser.py +0 -0
  114. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/yamibo/__init__.py +0 -0
  115. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/core/parsers/yamibo/main_parser.py +0 -0
  116. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/locales/en.json +0 -0
  117. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/locales/zh.json +0 -0
  118. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/__init__.py +0 -0
  119. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/browser.py +0 -0
  120. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/chapter.py +0 -0
  121. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/config.py +0 -0
  122. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/login.py +0 -0
  123. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/site_rules.py +0 -0
  124. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/tasks.py +0 -0
  125. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/models/types.py +0 -0
  126. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/config/settings.toml +0 -0
  127. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/css_styles/main.css +0 -0
  128. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/css_styles/volume-intro.css +0 -0
  129. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/images/volume_border.png +0 -0
  130. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/js_scripts/qidian_decrypt_node.js +0 -0
  131. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/json/linovelib_font_map.json +0 -0
  132. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/json/replace_word_map.json +0 -0
  133. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/resources/text/blacklist.txt +0 -0
  134. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/__init__.py +0 -0
  135. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/app.py +0 -0
  136. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/main.py +0 -0
  137. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/screens/__init__.py +0 -0
  138. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/screens/home.py +0 -0
  139. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/screens/login.py +0 -0
  140. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/styles/home_layout.tcss +0 -0
  141. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/tui/widgets/richlog_handler.py +0 -0
  142. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/__init__.py +0 -0
  143. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/cache.py +0 -0
  144. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/chapter_storage.py +0 -0
  145. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/constants.py +0 -0
  146. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/cookies.py +0 -0
  147. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/crypto_utils.py +0 -0
  148. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/file_utils/__init__.py +0 -0
  149. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/file_utils/io.py +0 -0
  150. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/file_utils/normalize.py +0 -0
  151. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/file_utils/sanitize.py +0 -0
  152. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/fontocr/__init__.py +0 -0
  153. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/fontocr/ocr_v1.py +0 -0
  154. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/fontocr/ocr_v2.py +0 -0
  155. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/hash_store.py +0 -0
  156. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/hash_utils.py +0 -0
  157. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/i18n.py +0 -0
  158. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/logger.py +0 -0
  159. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/model_loader.py +0 -0
  160. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/network.py +0 -0
  161. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/state.py +0 -0
  162. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/text_utils/__init__.py +0 -0
  163. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/text_utils/chapter_formatting.py +0 -0
  164. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/text_utils/diff_display.py +0 -0
  165. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/text_utils/font_mapping.py +0 -0
  166. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/text_utils/text_cleaning.py +0 -0
  167. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/time_utils/__init__.py +0 -0
  168. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/time_utils/datetime_utils.py +0 -0
  169. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader/utils/time_utils/sleep_utils.py +0 -0
  170. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/SOURCES.txt +0 -0
  171. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/dependency_links.txt +0 -0
  172. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/entry_points.txt +0 -0
  173. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/requires.txt +0 -0
  174. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/novel_downloader.egg-info/top_level.txt +0 -0
  175. {novel_downloader-1.4.0 → novel_downloader-1.4.1}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: novel-downloader
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: A command-line tool for downloading Chinese web novels from Qidian and similar platforms.
5
5
  Author-email: Saudade Z <saudadez217@gmail.com>
6
6
  License: MIT License
@@ -6,7 +6,7 @@ novel_downloader
6
6
  Core package for the Novel Downloader project.
7
7
  """
8
8
 
9
- __version__ = "1.4.0"
9
+ __version__ = "1.4.1"
10
10
 
11
11
  __author__ = "Saudade Z"
12
12
  __email__ = "saudadez217@gmail.com"
@@ -20,6 +20,7 @@ class LinovelibBrowser(BaseBrowser):
20
20
 
21
21
  BASE_URL = "https://www.linovelib.com"
22
22
  BOOK_INFO_URL = "https://www.linovelib.com/novel/{book_id}.html"
23
+ BOOK_CATALOG_UTL = "https://www.linovelib.com/novel/{book_id}/catalog"
23
24
  BOOK_VOL_URL = "https://www.linovelib.com/novel/{book_id}/{vol_id}.html"
24
25
  CHAPTER_URL = "https://www.linovelib.com/novel/{book_id}/{chapter_id}.html"
25
26
 
@@ -49,6 +50,10 @@ class LinovelibBrowser(BaseBrowser):
49
50
 
50
51
  vol_ids = self._extract_vol_ids(info_html)
51
52
  vol_ids.reverse()
53
+ if not vol_ids:
54
+ url = self.catalog_url(book_id=book_id)
55
+ catalog_html = await self.fetch(url, **kwargs)
56
+ vol_ids = self._extract_vol_ids(catalog_html)
52
57
 
53
58
  vol_htmls = []
54
59
  for vol_id in vol_ids:
@@ -134,6 +139,16 @@ class LinovelibBrowser(BaseBrowser):
134
139
  """
135
140
  return cls.BOOK_INFO_URL.format(book_id=book_id)
136
141
 
142
+ @classmethod
143
+ def catalog_url(cls, book_id: str) -> str:
144
+ """
145
+ Construct the URL for fetching a catalog page.
146
+
147
+ :param book_id: The identifier of the book.
148
+ :return: Fully qualified catalog URL.
149
+ """
150
+ return cls.BOOK_CATALOG_UTL.format(book_id=book_id)
151
+
137
152
  @classmethod
138
153
  def volume_url(cls, book_id: str, vol_id: str) -> str:
139
154
  """
@@ -20,6 +20,7 @@ class LinovelibSession(BaseSession):
20
20
 
21
21
  BASE_URL = "https://www.linovelib.com"
22
22
  BOOK_INFO_URL = "https://www.linovelib.com/novel/{book_id}.html"
23
+ BOOK_CATALOG_UTL = "https://www.linovelib.com/novel/{book_id}/catalog"
23
24
  BOOK_VOL_URL = "https://www.linovelib.com/novel/{book_id}/{vol_id}.html"
24
25
  CHAPTER_URL = "https://www.linovelib.com/novel/{book_id}/{chapter_id}.html"
25
26
 
@@ -49,6 +50,10 @@ class LinovelibSession(BaseSession):
49
50
 
50
51
  vol_ids = self._extract_vol_ids(info_html)
51
52
  vol_ids.reverse()
53
+ if not vol_ids:
54
+ url = self.catalog_url(book_id=book_id)
55
+ catalog_html = await self.fetch(url, **kwargs)
56
+ vol_ids = self._extract_vol_ids(catalog_html)
52
57
 
53
58
  vol_htmls = []
54
59
  for vol_id in vol_ids:
@@ -134,6 +139,16 @@ class LinovelibSession(BaseSession):
134
139
  """
135
140
  return cls.BOOK_INFO_URL.format(book_id=book_id)
136
141
 
142
+ @classmethod
143
+ def catalog_url(cls, book_id: str) -> str:
144
+ """
145
+ Construct the URL for fetching a catalog page.
146
+
147
+ :param book_id: The identifier of the book.
148
+ :return: Fully qualified catalog URL.
149
+ """
150
+ return cls.BOOK_CATALOG_UTL.format(book_id=book_id)
151
+
137
152
  @classmethod
138
153
  def volume_url(cls, book_id: str, vol_id: str) -> str:
139
154
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: novel-downloader
3
- Version: 1.4.0
3
+ Version: 1.4.1
4
4
  Summary: A command-line tool for downloading Chinese web novels from Qidian and similar platforms.
5
5
  Author-email: Saudade Z <saudadez217@gmail.com>
6
6
  License: MIT License
@@ -114,7 +114,7 @@ testpaths = ["tests"]
114
114
 
115
115
  [tool.commitizen]
116
116
  name = "cz_conventional_commits"
117
- version = "1.4.0"
117
+ version = "1.4.1"
118
118
  version_files = [
119
119
  "novel_downloader/__init__.py"
120
120
  ]