From c2ef2ddb3244537d2d6f2f2c1c35c90aebf2844a Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 03:14:16 +0000 Subject: [PATCH 01/12] Normalize dir_rule segments to simplified Chinese to avoid duplicate dirs (use JmcomicText.to_zh_cn) --- src/jmcomic/jm_option.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/jmcomic/jm_option.py b/src/jmcomic/jm_option.py index b993dd61..3182d307 100644 --- a/src/jmcomic/jm_option.py +++ b/src/jmcomic/jm_option.py @@ -1,4 +1,5 @@ from .jm_client_impl import * +from .jm_toolkit import JmcomicText class CacheRegistry: @@ -88,7 +89,14 @@ def apply_rule_to_path(self, album, photo, only_album_rules=False) -> str: jm_log('dir_rule', f'路径规则"{rule}"的解析出错: {e}, album={album}, photo={photo}') raise e if parser != self.parse_bd_rule: - path = fix_windir_name(str(path)).strip() + # 统一将路径段转换为简体,避免繁体/简体导致的重复下载目录 + try: + path = JmcomicText.to_zh_cn(str(path)) + except Exception: + # 如果转换不可用(例如缺少zhconv),退回原字符串 + path = str(path) + + path = fix_windir_name(path).strip() path_ls.append(path) From 3fbcd31f47d94a8b832cd9d41812a3df2f8499cb Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 03:41:16 +0000 Subject: [PATCH 02/12] Add dir_rule.normalize_zh option (default 'zh-cn') and implement configurable zh conversion; add JmcomicText.to_zh --- src/jmcomic/jm_config.py | 2 +- src/jmcomic/jm_option.py | 24 ++++++++++++++++++------ src/jmcomic/jm_toolkit.py | 30 ++++++++++++++++++++++++++++-- 3 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/jmcomic/jm_config.py b/src/jmcomic/jm_config.py index 7cb9a144..cdcca826 100644 --- a/src/jmcomic/jm_config.py +++ b/src/jmcomic/jm_config.py @@ -411,7 +411,7 @@ def new_postman(cls, session=False, **kwargs): DEFAULT_OPTION_DICT: dict = { 'log': None, - 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None}, + 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': 'zh-cn'}, 'download': { 'cache': True, 'image': {'decode': True, 'suffix': None}, diff --git a/src/jmcomic/jm_option.py b/src/jmcomic/jm_option.py index 3182d307..d3a98c4f 100644 --- a/src/jmcomic/jm_option.py +++ b/src/jmcomic/jm_option.py @@ -61,10 +61,16 @@ def enable_client_cache_on_condition(cls, class DirRule: RULE_BASE_DIR = 'Bd' - def __init__(self, rule: str, base_dir=None): + def __init__(self, rule: str, base_dir=None, normalize_zh='zh-cn'): + """ + :param rule: DSL rule + :param base_dir: base directory + :param normalize_zh: 'zh-cn'|'zh-tw'|'none' or None. 控制是否以及如何进行繁简体归一化,默认 'zh-cn' + """ base_dir = JmcomicText.parse_to_abspath(base_dir) self.base_dir = base_dir self.rule_dsl = rule + self.normalize_zh = normalize_zh self.parser_list: List[Tuple[str, Callable]] = self.get_rule_parser_list(rule) def decide_image_save_dir(self, @@ -89,14 +95,18 @@ def apply_rule_to_path(self, album, photo, only_album_rules=False) -> str: jm_log('dir_rule', f'路径规则"{rule}"的解析出错: {e}, album={album}, photo={photo}') raise e if parser != self.parse_bd_rule: - # 统一将路径段转换为简体,避免繁体/简体导致的重复下载目录 + # 根据配置 normalize_zh 进行繁简体统一或跳过 try: - path = JmcomicText.to_zh_cn(str(path)) + target = getattr(self, 'normalize_zh', None) + if target is None: + # 默认为不转换 + conv_path = str(path) + else: + conv_path = JmcomicText.to_zh(str(path), target) except Exception: - # 如果转换不可用(例如缺少zhconv),退回原字符串 - path = str(path) + conv_path = str(path) - path = fix_windir_name(path).strip() + path = fix_windir_name(conv_path).strip() path_ls.append(path) @@ -209,6 +219,7 @@ def copy_option(self): dir_rule={ 'rule': self.dir_rule.rule_dsl, 'base_dir': self.dir_rule.base_dir, + 'normalize_zh': getattr(self.dir_rule, 'normalize_zh', None), }, download=self.download.src_dict, client=self.client.src_dict, @@ -334,6 +345,7 @@ def deconstruct(self) -> Dict: 'dir_rule': { 'rule': self.dir_rule.rule_dsl, 'base_dir': self.dir_rule.base_dir, + 'normalize_zh': getattr(self.dir_rule, 'normalize_zh', None), }, 'download': self.download.src_dict, 'client': self.client.src_dict, diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 083ef4c4..084f5195 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -329,8 +329,34 @@ def find_right_pair(left_pair, i): @classmethod def to_zh_cn(cls, s): - import zhconv - return zhconv.convert(s, 'zh-cn') + # 兼容旧接口,默认转换为简体 + return cls.to_zh(s, 'zh-cn') + + @classmethod + def to_zh(cls, s, target='zh-cn'): + """ + 通用的繁简体转换接口。 + + :param s: 待转换字符串 + :param target: 目标编码: 'zh-cn'(简体), 'zh-tw'(繁体),或 None/'none' 表示不转换 + :return: 转换后的字符串(若转换失败或未安装 zhconv,返回原始字符串) + """ + if s is None: + return s + + if target is None: + return s + + t = str(target).strip().lower() + if t in ('none', ''): + return s + + try: + import zhconv + return zhconv.convert(s, t) + except Exception: + # 如果 zhconv 不可用或转换失败,则回退原字符串 + return s @classmethod def try_mkdir(cls, save_dir: str): From 012a8cfc434a511345841f2c6edbd65fac73988c Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:37:44 +0800 Subject: [PATCH 03/12] polish code --- assets/option/option_test_api.yml | 1 + src/jmcomic/jm_config.py | 2 +- src/jmcomic/jm_option.py | 17 ++++------------- src/jmcomic/jm_toolkit.py | 11 ++++------- 4 files changed, 10 insertions(+), 21 deletions(-) diff --git a/assets/option/option_test_api.yml b/assets/option/option_test_api.yml index bc4a648a..8f69aada 100644 --- a/assets/option/option_test_api.yml +++ b/assets/option/option_test_api.yml @@ -1,6 +1,7 @@ # GitHub Actions 测试用 # 移动端配置 dir_rule: + normalize_zh: zh-cn rule: Bd_Aauthor_Aid_Pindextitle client: diff --git a/src/jmcomic/jm_config.py b/src/jmcomic/jm_config.py index cdcca826..43789f82 100644 --- a/src/jmcomic/jm_config.py +++ b/src/jmcomic/jm_config.py @@ -411,7 +411,7 @@ def new_postman(cls, session=False, **kwargs): DEFAULT_OPTION_DICT: dict = { 'log': None, - 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': 'zh-cn'}, + 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': 'zh-cn'}, 'download': { 'cache': True, 'image': {'decode': True, 'suffix': None}, diff --git a/src/jmcomic/jm_option.py b/src/jmcomic/jm_option.py index d3a98c4f..d6656bdb 100644 --- a/src/jmcomic/jm_option.py +++ b/src/jmcomic/jm_option.py @@ -61,11 +61,11 @@ def enable_client_cache_on_condition(cls, class DirRule: RULE_BASE_DIR = 'Bd' - def __init__(self, rule: str, base_dir=None, normalize_zh='zh-cn'): + def __init__(self, rule: str, base_dir=None, normalize_zh=None): """ :param rule: DSL rule :param base_dir: base directory - :param normalize_zh: 'zh-cn'|'zh-tw'|'none' or None. 控制是否以及如何进行繁简体归一化,默认 'zh-cn' + :param normalize_zh: 'zh-cn'|'zh-tw'| or None. 控制是否以及如何进行繁简体归一化,默认 None """ base_dir = JmcomicText.parse_to_abspath(base_dir) self.base_dir = base_dir @@ -95,17 +95,8 @@ def apply_rule_to_path(self, album, photo, only_album_rules=False) -> str: jm_log('dir_rule', f'路径规则"{rule}"的解析出错: {e}, album={album}, photo={photo}') raise e if parser != self.parse_bd_rule: - # 根据配置 normalize_zh 进行繁简体统一或跳过 - try: - target = getattr(self, 'normalize_zh', None) - if target is None: - # 默认为不转换 - conv_path = str(path) - else: - conv_path = JmcomicText.to_zh(str(path), target) - except Exception: - conv_path = str(path) - + # 根据配置 normalize_zh 进行繁简体统一 + conv_path = JmcomicText.to_zh(str(path), self.normalize_zh) path = fix_windir_name(conv_path).strip() path_ls.append(path) diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 084f5195..5b597f00 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -333,7 +333,7 @@ def to_zh_cn(cls, s): return cls.to_zh(s, 'zh-cn') @classmethod - def to_zh(cls, s, target='zh-cn'): + def to_zh(cls, s, target=None): """ 通用的繁简体转换接口。 @@ -347,15 +347,12 @@ def to_zh(cls, s, target='zh-cn'): if target is None: return s - t = str(target).strip().lower() - if t in ('none', ''): - return s - try: import zhconv - return zhconv.convert(s, t) - except Exception: + return zhconv.convert(s, target) + except Exception as e: # 如果 zhconv 不可用或转换失败,则回退原字符串 + jm_log('zhconv.error', f'error: [{e}], s: [{s}]') return s @classmethod From e96048f6fcbdac8b2aba4547d5419b83687eecdf Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:43:08 +0800 Subject: [PATCH 04/12] polish code --- src/jmcomic/jm_config.py | 2 +- src/jmcomic/jm_toolkit.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jmcomic/jm_config.py b/src/jmcomic/jm_config.py index 43789f82..177ffb11 100644 --- a/src/jmcomic/jm_config.py +++ b/src/jmcomic/jm_config.py @@ -411,7 +411,7 @@ def new_postman(cls, session=False, **kwargs): DEFAULT_OPTION_DICT: dict = { 'log': None, - 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': 'zh-cn'}, + 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': ''}, 'download': { 'cache': True, 'image': {'decode': True, 'suffix': None}, diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 5b597f00..6ac35f2f 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -344,7 +344,7 @@ def to_zh(cls, s, target=None): if s is None: return s - if target is None: + if not target: return s try: From 560f090f71295a3270499ab0e82af9995ba9d2dc Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:44:44 +0800 Subject: [PATCH 05/12] polish code [skip ci] --- src/jmcomic/jm_option.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/jmcomic/jm_option.py b/src/jmcomic/jm_option.py index d6656bdb..abfafe74 100644 --- a/src/jmcomic/jm_option.py +++ b/src/jmcomic/jm_option.py @@ -210,7 +210,7 @@ def copy_option(self): dir_rule={ 'rule': self.dir_rule.rule_dsl, 'base_dir': self.dir_rule.base_dir, - 'normalize_zh': getattr(self.dir_rule, 'normalize_zh', None), + 'normalize_zh': self.dir_rule.normalize_zh, }, download=self.download.src_dict, client=self.client.src_dict, @@ -336,7 +336,7 @@ def deconstruct(self) -> Dict: 'dir_rule': { 'rule': self.dir_rule.rule_dsl, 'base_dir': self.dir_rule.base_dir, - 'normalize_zh': getattr(self.dir_rule, 'normalize_zh', None), + 'normalize_zh': self.dir_rule.normalize_zh, }, 'download': self.download.src_dict, 'client': self.client.src_dict, From 3b1c7e78ce46e64b82ae7350527033048bbb7312 Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 12:46:40 +0800 Subject: [PATCH 06/12] polish code [skip ci] --- src/jmcomic/jm_toolkit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 6ac35f2f..3ae38515 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -338,7 +338,7 @@ def to_zh(cls, s, target=None): 通用的繁简体转换接口。 :param s: 待转换字符串 - :param target: 目标编码: 'zh-cn'(简体), 'zh-tw'(繁体),或 None/'none' 表示不转换 + :param target: 目标编码: 'zh-cn'(简体), 'zh-tw'(繁体),或 None 表示不转换 :return: 转换后的字符串(若转换失败或未安装 zhconv,返回原始字符串) """ if s is None: From 8755330c71c07535891e6eec25ab1fee1db1eb46 Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 15:29:31 +0800 Subject: [PATCH 07/12] =?UTF-8?q?v2.6.10:=20=E6=94=AF=E6=8C=81=E7=B9=81?= =?UTF-8?q?=E7=AE=80=E8=BD=AC=E6=8D=A2=E6=96=87=E4=BB=B6=E5=A4=B9=E5=90=8D?= =?UTF-8?q?=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jmcomic/__init__.py | 2 +- src/jmcomic/jm_config.py | 2 +- src/jmcomic/jm_toolkit.py | 6 +++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/jmcomic/__init__.py b/src/jmcomic/__init__.py index 6a3dcd41..fd82ee2a 100644 --- a/src/jmcomic/__init__.py +++ b/src/jmcomic/__init__.py @@ -2,7 +2,7 @@ # 被依赖方 <--- 使用方 # config <--- entity <--- toolkit <--- client <--- option <--- downloader -__version__ = '2.6.9' +__version__ = '2.6.10' from .api import * from .jm_plugin import * diff --git a/src/jmcomic/jm_config.py b/src/jmcomic/jm_config.py index 177ffb11..8e733afc 100644 --- a/src/jmcomic/jm_config.py +++ b/src/jmcomic/jm_config.py @@ -411,7 +411,7 @@ def new_postman(cls, session=False, **kwargs): DEFAULT_OPTION_DICT: dict = { 'log': None, - 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': ''}, + 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': None}, 'download': { 'cache': True, 'image': {'decode': True, 'suffix': None}, diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 3ae38515..21a7c9cd 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -350,6 +350,9 @@ def to_zh(cls, s, target=None): try: import zhconv return zhconv.convert(s, target) + except ImportError as e: + jm_log('zhconv.error', '繁简转换失败,未安装zhconv,请先使用命令安装: [pip install zhconv]') + return s except Exception as e: # 如果 zhconv 不可用或转换失败,则回退原字符串 jm_log('zhconv.error', f'error: [{e}], s: [{s}]') @@ -469,7 +472,8 @@ class JmPageTool: pattern_html_search_tags = compile(r']*?>(.*?)') # 查找错误,例如 [错误,關鍵字過短,請至少輸入兩個字以上。] - pattern_html_search_error = compile(r'
\n(.*?)\n
\n(.*?)\n
\n
') + pattern_html_search_error = compile( + r'
\n(.*?)\n
\n(.*?)\n
\n
') pattern_html_search_total = compile(r'class="text-white">(\d+) A漫.'), 0 From ba66ec7560e7fc4429a54035403b1e7135862c68 Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:01:52 +0000 Subject: [PATCH 08/12] =?UTF-8?q?docs:=20=E5=90=8C=E6=AD=A5=20dir=5Frule.n?= =?UTF-8?q?ormalize=5Fzh=20=E6=96=87=E6=A1=A3=EF=BC=88=E5=AF=B9=E5=BA=94?= =?UTF-8?q?=20PR=20#486=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- assets/docs/sources/option_file_syntax.md | 12 +++++++++++- .../docs/sources/tutorial/4_module_custom.md | 2 ++ .../tutorial/9_custom_download_dir_name.md | 18 ++++++++++++++++++ 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 07afce1a..d1ca1259 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ jmcomic 123 - 不配置也能使用,十分方便 - 配置可以从配置文件生成,支持多种文件格式 - - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)` + - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)` `中文繁/简转换` 等 等 - **可扩展性强** diff --git a/assets/docs/sources/option_file_syntax.md b/assets/docs/sources/option_file_syntax.md index 8c718441..85cf7f67 100644 --- a/assets/docs/sources/option_file_syntax.md +++ b/assets/docs/sources/option_file_syntax.md @@ -115,7 +115,17 @@ dir_rule: # rule: Bd / Aauthor / (JM{Aid}-{Pindex})-{Pname} # {}大括号里的内容同样是写 Axxx 或 Pxxx,其他语法自行参考python f-string的语法 # 另外,rule开头的Bd可忽略不写,因为程序会自动插入Bd -``` + + # normalize_zh: 可选。控制是否对目录/文件名中的中文进行繁简体规范化。 + # - None(默认):不做任何转换,保持历史行为 + # - zh-cn:将中文文本规范为简体 + # - zh-tw:将中文文本规范为繁体 + # 该功能依赖可选库 `zhconv`(非必需),若未安装或转换失败,程序会回退到原字符串并继续工作,不会影响下载流程。 + # 示例: + # dir_rule: + # base_dir: D:/a/b/c/ + # rule: Bd / Ptitle + # normalize_zh: zh-cn ## 3. option插件配置项 diff --git a/assets/docs/sources/tutorial/4_module_custom.md b/assets/docs/sources/tutorial/4_module_custom.md index 74c250c2..bc015eed 100644 --- a/assets/docs/sources/tutorial/4_module_custom.md +++ b/assets/docs/sources/tutorial/4_module_custom.md @@ -102,6 +102,8 @@ def custom_album_photo_image_detail_class(): dir_rule: base_dir: ${workspace} rule: Bd_Acustom_Pcustom + # 可选:对目录名进行繁/简体规范化(None/zh-cn/zh-tw),默认不启用 + # normalize_zh: zh-cn 上面的Acustom,Pcustom都是自定义字段 如果你想要使用这种自定义字段,你就需要替换默认的实体类,方式如下 diff --git a/assets/docs/sources/tutorial/9_custom_download_dir_name.md b/assets/docs/sources/tutorial/9_custom_download_dir_name.md index 89406ef1..966d3cc0 100644 --- a/assets/docs/sources/tutorial/9_custom_download_dir_name.md +++ b/assets/docs/sources/tutorial/9_custom_download_dir_name.md @@ -58,6 +58,24 @@ D:/a/b/c/ddd/00003.webp 除了Pxxx,你还可以写Axxx,表示这个章节所在的本子的属性xxx,详见本子实体类 JmAlbumDetail。 +## 1.1 简繁体统一(normalize_zh) + +在一些源站中,同一作品或章节名称可能存在简体/繁体差异,导致在不同环境下生成重复或不一致的文件夹名。v2.6.10 引入了 `dir_rule.normalize_zh` 配置,用于可选地对目录名进行繁/简体规范化。 + +示例用法: + +```yaml +dir_rule: + base_dir: D:/a/b/c/ + rule: Bd / Ptitle + normalize_zh: zh-cn # 可选值:None(默认,不转换)/ zh-cn / zh-tw +``` + +说明: +- 当 `normalize_zh` 为 `zh-cn` 时,会把目录名中的中文规范为简体;为 `zh-tw` 时规范为繁体;为 `None` 或不配置时维持历史行为(不转换)。 +- 该功能依赖可选库 `zhconv`(非必需),若未安装或转换失败,系统会回退为原始字符串并继续下载,不会导致失败。 + + ## 2. 自定义字段名 上述例子使用了title字段,如果你想自定义一个字段,然后在DirRule中使用自定义字段,该怎么做? From 586a79770fe6c11456d5ecb7a5e7b8840d61b719 Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:04:44 +0000 Subject: [PATCH 09/12] docs [skip ci] --- assets/docs/sources/option_file_syntax.md | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/docs/sources/option_file_syntax.md b/assets/docs/sources/option_file_syntax.md index 85cf7f67..75497b70 100644 --- a/assets/docs/sources/option_file_syntax.md +++ b/assets/docs/sources/option_file_syntax.md @@ -126,6 +126,7 @@ dir_rule: # base_dir: D:/a/b/c/ # rule: Bd / Ptitle # normalize_zh: zh-cn +``` ## 3. option插件配置项 From ac131f2e3472bcc982bb5ae2315a5506aa46f6de Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:20:49 +0000 Subject: [PATCH 10/12] docs [skip ci] --- assets/docs/sources/tutorial/9_custom_download_dir_name.md | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/docs/sources/tutorial/9_custom_download_dir_name.md b/assets/docs/sources/tutorial/9_custom_download_dir_name.md index 966d3cc0..47e7a60e 100644 --- a/assets/docs/sources/tutorial/9_custom_download_dir_name.md +++ b/assets/docs/sources/tutorial/9_custom_download_dir_name.md @@ -73,6 +73,7 @@ dir_rule: 说明: - 当 `normalize_zh` 为 `zh-cn` 时,会把目录名中的中文规范为简体;为 `zh-tw` 时规范为繁体;为 `None` 或不配置时维持历史行为(不转换)。 + - 该功能依赖可选库 `zhconv`(非必需),若未安装或转换失败,系统会回退为原始字符串并继续下载,不会导致失败。 From d5105135db9d2247235a418012e550cc7ecc677d Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 08:24:11 +0000 Subject: [PATCH 11/12] docs [skip ci] --- assets/docs/sources/tutorial/9_custom_download_dir_name.md | 1 + 1 file changed, 1 insertion(+) diff --git a/assets/docs/sources/tutorial/9_custom_download_dir_name.md b/assets/docs/sources/tutorial/9_custom_download_dir_name.md index 47e7a60e..9d22bd5c 100644 --- a/assets/docs/sources/tutorial/9_custom_download_dir_name.md +++ b/assets/docs/sources/tutorial/9_custom_download_dir_name.md @@ -72,6 +72,7 @@ dir_rule: ``` 说明: + - 当 `normalize_zh` 为 `zh-cn` 时,会把目录名中的中文规范为简体;为 `zh-tw` 时规范为繁体;为 `None` 或不配置时维持历史行为(不转换)。 - 该功能依赖可选库 `zhconv`(非必需),若未安装或转换失败,系统会回退为原始字符串并继续下载,不会导致失败。 From 85be7fdac0455ca2f1bfb96d022eaee1768e3f97 Mon Sep 17 00:00:00 2001 From: hect0x7 <93357912+hect0x7@users.noreply.github.com> Date: Mon, 27 Oct 2025 16:33:10 +0800 Subject: [PATCH 12/12] polish code --- README.md | 2 +- src/jmcomic/jm_option.py | 1 - src/jmcomic/jm_toolkit.py | 3 +-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index d1ca1259..b2eb6ce7 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,7 @@ jmcomic 123 - 不配置也能使用,十分方便 - 配置可以从配置文件生成,支持多种文件格式 - - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)` `中文繁/简转换` 等 + - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)` `中文繁/简转换` 等 - **可扩展性强** diff --git a/src/jmcomic/jm_option.py b/src/jmcomic/jm_option.py index abfafe74..9c6ae612 100644 --- a/src/jmcomic/jm_option.py +++ b/src/jmcomic/jm_option.py @@ -1,5 +1,4 @@ from .jm_client_impl import * -from .jm_toolkit import JmcomicText class CacheRegistry: diff --git a/src/jmcomic/jm_toolkit.py b/src/jmcomic/jm_toolkit.py index 21a7c9cd..c683e3c1 100644 --- a/src/jmcomic/jm_toolkit.py +++ b/src/jmcomic/jm_toolkit.py @@ -472,8 +472,7 @@ class JmPageTool: pattern_html_search_tags = compile(r']*?>(.*?)') # 查找错误,例如 [错误,關鍵字過短,請至少輸入兩個字以上。] - pattern_html_search_error = compile( - r'
\n(.*?)\n
\n(.*?)\n
\n
') + pattern_html_search_error = compile(r'
\n(.*?)\n
\n(.*?)\n
\n
') pattern_html_search_total = compile(r'class="text-white">(\d+) A漫.'), 0