novel-downloader 1.4.5__py3-none-any.whl → 1.5.0__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.
- novel_downloader/__init__.py +1 -1
- novel_downloader/cli/__init__.py +2 -2
- novel_downloader/cli/config.py +1 -83
- novel_downloader/cli/download.py +4 -5
- novel_downloader/cli/export.py +4 -1
- novel_downloader/cli/main.py +2 -0
- novel_downloader/cli/search.py +123 -0
- novel_downloader/config/__init__.py +3 -10
- novel_downloader/config/adapter.py +190 -54
- novel_downloader/config/loader.py +2 -3
- novel_downloader/core/__init__.py +13 -13
- novel_downloader/core/downloaders/__init__.py +10 -11
- novel_downloader/core/downloaders/base.py +152 -26
- novel_downloader/core/downloaders/biquge.py +5 -1
- novel_downloader/core/downloaders/common.py +157 -378
- novel_downloader/core/downloaders/esjzone.py +5 -1
- novel_downloader/core/downloaders/linovelib.py +5 -1
- novel_downloader/core/downloaders/qianbi.py +291 -4
- novel_downloader/core/downloaders/qidian.py +199 -285
- novel_downloader/core/downloaders/registry.py +67 -0
- novel_downloader/core/downloaders/sfacg.py +5 -1
- novel_downloader/core/downloaders/yamibo.py +5 -1
- novel_downloader/core/exporters/__init__.py +10 -11
- novel_downloader/core/exporters/base.py +87 -7
- novel_downloader/core/exporters/biquge.py +5 -8
- novel_downloader/core/exporters/common/__init__.py +2 -2
- novel_downloader/core/exporters/common/epub.py +82 -166
- novel_downloader/core/exporters/common/main_exporter.py +0 -60
- novel_downloader/core/exporters/common/txt.py +82 -83
- novel_downloader/core/exporters/epub_util.py +157 -1330
- novel_downloader/core/exporters/esjzone.py +5 -8
- novel_downloader/core/exporters/linovelib/__init__.py +2 -2
- novel_downloader/core/exporters/linovelib/epub.py +157 -212
- novel_downloader/core/exporters/linovelib/main_exporter.py +2 -59
- novel_downloader/core/exporters/linovelib/txt.py +67 -63
- novel_downloader/core/exporters/qianbi.py +5 -8
- novel_downloader/core/exporters/qidian.py +14 -4
- novel_downloader/core/exporters/registry.py +53 -0
- novel_downloader/core/exporters/sfacg.py +5 -8
- novel_downloader/core/exporters/txt_util.py +67 -0
- novel_downloader/core/exporters/yamibo.py +5 -8
- novel_downloader/core/fetchers/__init__.py +19 -24
- novel_downloader/core/fetchers/base/__init__.py +3 -3
- novel_downloader/core/fetchers/base/browser.py +23 -4
- novel_downloader/core/fetchers/base/session.py +30 -5
- novel_downloader/core/fetchers/biquge/__init__.py +3 -3
- novel_downloader/core/fetchers/biquge/browser.py +5 -0
- novel_downloader/core/fetchers/biquge/session.py +6 -1
- novel_downloader/core/fetchers/esjzone/__init__.py +3 -3
- novel_downloader/core/fetchers/esjzone/browser.py +5 -0
- novel_downloader/core/fetchers/esjzone/session.py +6 -1
- novel_downloader/core/fetchers/linovelib/__init__.py +3 -3
- novel_downloader/core/fetchers/linovelib/browser.py +6 -1
- novel_downloader/core/fetchers/linovelib/session.py +6 -1
- novel_downloader/core/fetchers/qianbi/__init__.py +3 -3
- novel_downloader/core/fetchers/qianbi/browser.py +5 -0
- novel_downloader/core/fetchers/qianbi/session.py +5 -0
- novel_downloader/core/fetchers/qidian/__init__.py +3 -3
- novel_downloader/core/fetchers/qidian/browser.py +12 -4
- novel_downloader/core/fetchers/qidian/session.py +11 -3
- novel_downloader/core/fetchers/registry.py +71 -0
- novel_downloader/core/fetchers/sfacg/__init__.py +3 -3
- novel_downloader/core/fetchers/sfacg/browser.py +5 -0
- novel_downloader/core/fetchers/sfacg/session.py +5 -0
- novel_downloader/core/fetchers/yamibo/__init__.py +3 -3
- novel_downloader/core/fetchers/yamibo/browser.py +5 -0
- novel_downloader/core/fetchers/yamibo/session.py +6 -1
- novel_downloader/core/interfaces/__init__.py +7 -5
- novel_downloader/core/interfaces/searcher.py +18 -0
- novel_downloader/core/parsers/__init__.py +10 -11
- novel_downloader/core/parsers/{biquge/main_parser.py → biquge.py} +7 -2
- novel_downloader/core/parsers/{esjzone/main_parser.py → esjzone.py} +7 -2
- novel_downloader/core/parsers/{linovelib/main_parser.py → linovelib.py} +7 -2
- novel_downloader/core/parsers/{qianbi/main_parser.py → qianbi.py} +7 -2
- novel_downloader/core/parsers/qidian/__init__.py +2 -2
- novel_downloader/core/parsers/qidian/chapter_encrypted.py +23 -21
- novel_downloader/core/parsers/qidian/chapter_normal.py +1 -1
- novel_downloader/core/parsers/qidian/main_parser.py +10 -21
- novel_downloader/core/parsers/qidian/utils/__init__.py +11 -11
- novel_downloader/core/parsers/qidian/utils/decryptor_fetcher.py +5 -6
- novel_downloader/core/parsers/qidian/utils/node_decryptor.py +2 -2
- novel_downloader/core/parsers/registry.py +68 -0
- novel_downloader/core/parsers/{sfacg/main_parser.py → sfacg.py} +7 -2
- novel_downloader/core/parsers/{yamibo/main_parser.py → yamibo.py} +7 -2
- novel_downloader/core/searchers/__init__.py +20 -0
- novel_downloader/core/searchers/base.py +92 -0
- novel_downloader/core/searchers/biquge.py +83 -0
- novel_downloader/core/searchers/esjzone.py +84 -0
- novel_downloader/core/searchers/qianbi.py +131 -0
- novel_downloader/core/searchers/qidian.py +87 -0
- novel_downloader/core/searchers/registry.py +63 -0
- novel_downloader/locales/en.json +12 -4
- novel_downloader/locales/zh.json +12 -4
- novel_downloader/models/__init__.py +4 -30
- novel_downloader/models/config.py +12 -6
- novel_downloader/models/search.py +16 -0
- novel_downloader/models/types.py +0 -2
- novel_downloader/resources/config/settings.toml +31 -4
- novel_downloader/resources/css_styles/intro.css +83 -0
- novel_downloader/resources/css_styles/main.css +30 -89
- novel_downloader/utils/__init__.py +52 -0
- novel_downloader/utils/chapter_storage.py +244 -224
- novel_downloader/utils/constants.py +1 -21
- novel_downloader/utils/epub/__init__.py +34 -0
- novel_downloader/utils/epub/builder.py +377 -0
- novel_downloader/utils/epub/constants.py +77 -0
- novel_downloader/utils/epub/documents.py +403 -0
- novel_downloader/utils/epub/models.py +134 -0
- novel_downloader/utils/epub/utils.py +212 -0
- novel_downloader/utils/file_utils/__init__.py +10 -14
- novel_downloader/utils/file_utils/io.py +20 -51
- novel_downloader/utils/file_utils/normalize.py +2 -2
- novel_downloader/utils/file_utils/sanitize.py +2 -3
- novel_downloader/utils/fontocr/__init__.py +5 -5
- novel_downloader/utils/{hash_store.py → fontocr/hash_store.py} +4 -3
- novel_downloader/utils/{hash_utils.py → fontocr/hash_utils.py} +2 -2
- novel_downloader/utils/fontocr/ocr_v1.py +13 -1
- novel_downloader/utils/fontocr/ocr_v2.py +13 -1
- novel_downloader/utils/fontocr/ocr_v3.py +744 -0
- novel_downloader/utils/i18n.py +2 -0
- novel_downloader/utils/logger.py +2 -0
- novel_downloader/utils/network.py +110 -251
- novel_downloader/utils/state.py +1 -0
- novel_downloader/utils/text_utils/__init__.py +18 -17
- novel_downloader/utils/text_utils/diff_display.py +4 -5
- novel_downloader/utils/text_utils/numeric_conversion.py +253 -0
- novel_downloader/utils/text_utils/text_cleaner.py +179 -0
- novel_downloader/utils/text_utils/truncate_utils.py +62 -0
- novel_downloader/utils/time_utils/__init__.py +3 -3
- novel_downloader/utils/time_utils/datetime_utils.py +4 -5
- novel_downloader/utils/time_utils/sleep_utils.py +2 -3
- {novel_downloader-1.4.5.dist-info → novel_downloader-1.5.0.dist-info}/METADATA +2 -2
- novel_downloader-1.5.0.dist-info/RECORD +164 -0
- novel_downloader/config/site_rules.py +0 -94
- novel_downloader/core/factory/__init__.py +0 -20
- novel_downloader/core/factory/downloader.py +0 -73
- novel_downloader/core/factory/exporter.py +0 -58
- novel_downloader/core/factory/fetcher.py +0 -96
- novel_downloader/core/factory/parser.py +0 -86
- novel_downloader/core/fetchers/common/__init__.py +0 -14
- novel_downloader/core/fetchers/common/browser.py +0 -79
- novel_downloader/core/fetchers/common/session.py +0 -79
- novel_downloader/core/parsers/biquge/__init__.py +0 -10
- novel_downloader/core/parsers/common/__init__.py +0 -13
- novel_downloader/core/parsers/common/helper.py +0 -323
- novel_downloader/core/parsers/common/main_parser.py +0 -106
- novel_downloader/core/parsers/esjzone/__init__.py +0 -10
- novel_downloader/core/parsers/linovelib/__init__.py +0 -10
- novel_downloader/core/parsers/qianbi/__init__.py +0 -10
- novel_downloader/core/parsers/sfacg/__init__.py +0 -10
- novel_downloader/core/parsers/yamibo/__init__.py +0 -10
- novel_downloader/models/browser.py +0 -21
- novel_downloader/models/site_rules.py +0 -99
- novel_downloader/models/tasks.py +0 -33
- novel_downloader/resources/css_styles/volume-intro.css +0 -56
- novel_downloader/resources/json/replace_word_map.json +0 -4
- novel_downloader/resources/text/blacklist.txt +0 -22
- novel_downloader/utils/text_utils/chapter_formatting.py +0 -46
- novel_downloader/utils/text_utils/font_mapping.py +0 -28
- novel_downloader/utils/text_utils/text_cleaning.py +0 -107
- novel_downloader-1.4.5.dist-info/RECORD +0 -165
- {novel_downloader-1.4.5.dist-info → novel_downloader-1.5.0.dist-info}/WHEEL +0 -0
- {novel_downloader-1.4.5.dist-info → novel_downloader-1.5.0.dist-info}/entry_points.txt +0 -0
- {novel_downloader-1.4.5.dist-info → novel_downloader-1.5.0.dist-info}/licenses/LICENSE +0 -0
- {novel_downloader-1.4.5.dist-info → novel_downloader-1.5.0.dist-info}/top_level.txt +0 -0
@@ -1,104 +1,45 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
body {
|
2
|
+
font-family: serif;
|
3
|
+
height: 95%;
|
4
|
+
line-height: 1.6;
|
5
|
+
margin: 1em;
|
4
6
|
}
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
margin:0 0 1.5em;
|
11
|
-
}
|
12
|
-
.article .images {
|
13
|
-
margin:1.0em 0;
|
14
|
-
border:1px solid #000
|
15
|
-
}
|
16
|
-
|
17
|
-
.new-page-after {
|
18
|
-
page-break-after:always;
|
19
|
-
}
|
20
|
-
|
21
|
-
.cover {
|
22
|
-
width:100%;
|
23
|
-
padding:0px;
|
24
|
-
}
|
25
|
-
.center {
|
26
|
-
text-align: center;
|
27
|
-
margin-left: 0%;
|
28
|
-
margin-right: 0%;
|
29
|
-
}
|
30
|
-
.left {
|
31
|
-
text-align: center;
|
32
|
-
margin-left: 0%;
|
33
|
-
margin-right: 0%;
|
34
|
-
}
|
35
|
-
.right {
|
36
|
-
text-align: right;
|
37
|
-
margin-left: 0%;
|
38
|
-
margin-right: 0%;
|
8
|
+
h2 {
|
9
|
+
font-size: 1.5em;
|
10
|
+
margin: 1.5em 0 0.75em;
|
11
|
+
text-align: center;
|
39
12
|
}
|
40
13
|
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
border-width: 1px 0 0 0;
|
45
|
-
margin-top: 0.5em;
|
46
|
-
margin-bottom: 0.5em;
|
47
|
-
}
|
48
|
-
|
49
|
-
h1 {
|
50
|
-
text-indent: 0;
|
51
|
-
duokan-text-indent: 0;
|
52
|
-
line-height: 110%;
|
53
|
-
text-align: center;
|
54
|
-
font-size: 1.2em;
|
55
|
-
margin-top: 0.4em;
|
56
|
-
margin-bottom: 0.4em;
|
57
|
-
}
|
58
|
-
|
59
|
-
h2, h3, h4, h5, h6 {
|
60
|
-
text-indent: 0;
|
61
|
-
duokan-text-indent: 0;
|
62
|
-
line-height: 110%;
|
63
|
-
font-size: 1.1em;
|
64
|
-
margin-top: 0.4em;
|
65
|
-
margin-bottom: 0.4em;
|
14
|
+
p {
|
15
|
+
text-indent: 2em;
|
16
|
+
margin: 0.5em 0;
|
66
17
|
}
|
67
18
|
|
68
|
-
p {
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
line-height: 100%;
|
73
|
-
margin-top: 0.4em;
|
74
|
-
margin-bottom: 0.4em;
|
19
|
+
p.new-page-after {
|
20
|
+
margin: 0;
|
21
|
+
padding: 0;
|
22
|
+
page-break-after: always;
|
75
23
|
}
|
76
24
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
line-height: 130%;
|
25
|
+
.duokan-image-single {
|
26
|
+
text-align: center;
|
27
|
+
margin: 1em 0;
|
81
28
|
}
|
82
29
|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
font-size: 1em;
|
30
|
+
.duokan-image-single img {
|
31
|
+
max-width: 100%;
|
32
|
+
height: auto;
|
33
|
+
display: inline-block;
|
88
34
|
}
|
89
35
|
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
margin-left: 0;
|
95
|
-
list-style-type: none;
|
36
|
+
hr {
|
37
|
+
border: none;
|
38
|
+
border-top: 1px solid #ccc;
|
39
|
+
margin: 1.5em 0;
|
96
40
|
}
|
97
41
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
margin-bottom: 0.4em;
|
102
|
-
margin-left: 0;
|
103
|
-
list-style-type: none;
|
42
|
+
h3 {
|
43
|
+
font-size: 1.2em;
|
44
|
+
margin: 1em 0 0.5em;
|
104
45
|
}
|
@@ -4,3 +4,55 @@ novel_downloader.utils
|
|
4
4
|
----------------------
|
5
5
|
|
6
6
|
"""
|
7
|
+
|
8
|
+
__all__ = [
|
9
|
+
"ChapterStorage",
|
10
|
+
"TextCleaner",
|
11
|
+
"resolve_cookies",
|
12
|
+
"parse_cookie_expires",
|
13
|
+
"find_cookie_value",
|
14
|
+
"rc4_crypt",
|
15
|
+
"sanitize_filename",
|
16
|
+
"save_as_json",
|
17
|
+
"save_as_txt",
|
18
|
+
"read_text_file",
|
19
|
+
"read_json_file",
|
20
|
+
"read_binary_file",
|
21
|
+
"download",
|
22
|
+
"get_cleaner",
|
23
|
+
"content_prefix",
|
24
|
+
"truncate_half_lines",
|
25
|
+
"diff_inline_display",
|
26
|
+
"calculate_time_difference",
|
27
|
+
"async_sleep_with_random_delay",
|
28
|
+
"sleep_with_random_delay",
|
29
|
+
]
|
30
|
+
|
31
|
+
from .chapter_storage import ChapterStorage
|
32
|
+
from .cookies import (
|
33
|
+
find_cookie_value,
|
34
|
+
parse_cookie_expires,
|
35
|
+
resolve_cookies,
|
36
|
+
)
|
37
|
+
from .crypto_utils import rc4_crypt
|
38
|
+
from .file_utils import (
|
39
|
+
read_binary_file,
|
40
|
+
read_json_file,
|
41
|
+
read_text_file,
|
42
|
+
sanitize_filename,
|
43
|
+
save_as_json,
|
44
|
+
save_as_txt,
|
45
|
+
)
|
46
|
+
from .network import download
|
47
|
+
from .text_utils import (
|
48
|
+
TextCleaner,
|
49
|
+
content_prefix,
|
50
|
+
diff_inline_display,
|
51
|
+
get_cleaner,
|
52
|
+
truncate_half_lines,
|
53
|
+
)
|
54
|
+
from .time_utils import (
|
55
|
+
async_sleep_with_random_delay,
|
56
|
+
calculate_time_difference,
|
57
|
+
sleep_with_random_delay,
|
58
|
+
)
|