jmcomic 2.6.9__py3-none-any.whl → 2.6.10__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.
jmcomic/__init__.py CHANGED
@@ -2,7 +2,7 @@
2
2
  # 被依赖方 <--- 使用方
3
3
  # config <--- entity <--- toolkit <--- client <--- option <--- downloader
4
4
 
5
- __version__ = '2.6.9'
5
+ __version__ = '2.6.10'
6
6
 
7
7
  from .api import *
8
8
  from .jm_plugin import *
jmcomic/jm_config.py CHANGED
@@ -411,7 +411,7 @@ class JmModuleConfig:
411
411
 
412
412
  DEFAULT_OPTION_DICT: dict = {
413
413
  'log': None,
414
- 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None},
414
+ 'dir_rule': {'rule': 'Bd_Pname', 'base_dir': None, 'normalize_zh': None},
415
415
  'download': {
416
416
  'cache': True,
417
417
  'image': {'decode': True, 'suffix': None},
jmcomic/jm_option.py CHANGED
@@ -60,10 +60,16 @@ class CacheRegistry:
60
60
  class DirRule:
61
61
  RULE_BASE_DIR = 'Bd'
62
62
 
63
- def __init__(self, rule: str, base_dir=None):
63
+ def __init__(self, rule: str, base_dir=None, normalize_zh=None):
64
+ """
65
+ :param rule: DSL rule
66
+ :param base_dir: base directory
67
+ :param normalize_zh: 'zh-cn'|'zh-tw'| or None. 控制是否以及如何进行繁简体归一化,默认 None
68
+ """
64
69
  base_dir = JmcomicText.parse_to_abspath(base_dir)
65
70
  self.base_dir = base_dir
66
71
  self.rule_dsl = rule
72
+ self.normalize_zh = normalize_zh
67
73
  self.parser_list: List[Tuple[str, Callable]] = self.get_rule_parser_list(rule)
68
74
 
69
75
  def decide_image_save_dir(self,
@@ -88,7 +94,9 @@ class DirRule:
88
94
  jm_log('dir_rule', f'路径规则"{rule}"的解析出错: {e}, album={album}, photo={photo}')
89
95
  raise e
90
96
  if parser != self.parse_bd_rule:
91
- path = fix_windir_name(str(path)).strip()
97
+ # 根据配置 normalize_zh 进行繁简体统一
98
+ conv_path = JmcomicText.to_zh(str(path), self.normalize_zh)
99
+ path = fix_windir_name(conv_path).strip()
92
100
 
93
101
  path_ls.append(path)
94
102
 
@@ -201,6 +209,7 @@ class JmOption:
201
209
  dir_rule={
202
210
  'rule': self.dir_rule.rule_dsl,
203
211
  'base_dir': self.dir_rule.base_dir,
212
+ 'normalize_zh': self.dir_rule.normalize_zh,
204
213
  },
205
214
  download=self.download.src_dict,
206
215
  client=self.client.src_dict,
@@ -326,6 +335,7 @@ class JmOption:
326
335
  'dir_rule': {
327
336
  'rule': self.dir_rule.rule_dsl,
328
337
  'base_dir': self.dir_rule.base_dir,
338
+ 'normalize_zh': self.dir_rule.normalize_zh,
329
339
  },
330
340
  'download': self.download.src_dict,
331
341
  'client': self.client.src_dict,
jmcomic/jm_toolkit.py CHANGED
@@ -329,8 +329,34 @@ class JmcomicText:
329
329
 
330
330
  @classmethod
331
331
  def to_zh_cn(cls, s):
332
- import zhconv
333
- return zhconv.convert(s, 'zh-cn')
332
+ # 兼容旧接口,默认转换为简体
333
+ return cls.to_zh(s, 'zh-cn')
334
+
335
+ @classmethod
336
+ def to_zh(cls, s, target=None):
337
+ """
338
+ 通用的繁简体转换接口。
339
+
340
+ :param s: 待转换字符串
341
+ :param target: 目标编码: 'zh-cn'(简体), 'zh-tw'(繁体),或 None 表示不转换
342
+ :return: 转换后的字符串(若转换失败或未安装 zhconv,返回原始字符串)
343
+ """
344
+ if s is None:
345
+ return s
346
+
347
+ if not target:
348
+ return s
349
+
350
+ try:
351
+ import zhconv
352
+ return zhconv.convert(s, target)
353
+ except ImportError as e:
354
+ jm_log('zhconv.error', '繁简转换失败,未安装zhconv,请先使用命令安装: [pip install zhconv]')
355
+ return s
356
+ except Exception as e:
357
+ # 如果 zhconv 不可用或转换失败,则回退原字符串
358
+ jm_log('zhconv.error', f'error: [{e}], s: [{s}]')
359
+ return s
334
360
 
335
361
  @classmethod
336
362
  def try_mkdir(cls, save_dir: str):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: jmcomic
3
- Version: 2.6.9
3
+ Version: 2.6.10
4
4
  Summary: Python API For JMComic (禁漫天堂)
5
5
  Home-page: https://github.com/hect0x7/JMComic-Crawler-Python
6
6
  Author: hect0x7
@@ -200,7 +200,7 @@ jmcomic 123
200
200
 
201
201
  - 不配置也能使用,十分方便
202
202
  - 配置可以从配置文件生成,支持多种文件格式
203
- - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)`
203
+ - 配置点有:`请求域名` `客户端实现` `是否使用磁盘缓存` `同时下载的章节/图片数量` `图片格式转换` `下载路径规则` `请求元信息(headers,cookies,proxies)` `中文繁/简转换`
204
204
 
205
205
  - **可扩展性强**
206
206
 
@@ -0,0 +1,18 @@
1
+ jmcomic/__init__.py,sha256=aF8prAr4WXYL4ENj4VguJAKEwTPHVLQ1vtOg6vlPGm8,903
2
+ jmcomic/api.py,sha256=ZduhXDmh4lg1dkXHs7UTAaPpYNO7kcdPCDH5JJT9KSI,4253
3
+ jmcomic/cl.py,sha256=PBSh0JndNFZw3B7WJPj5Y8SeFdKzHE00jIwYo9An-K0,3475
4
+ jmcomic/jm_client_impl.py,sha256=UpzqO3LD567U7ETs6SpSdCKQS4mvtbCbN6sVwU6DXxk,42301
5
+ jmcomic/jm_client_interface.py,sha256=HJPmaY0xdSghPKuTh2CvVjlgJmoW1rubqjysHcOGDHQ,19701
6
+ jmcomic/jm_config.py,sha256=y4YJebAKhMKt-oPGn6kahjKfZpAtzD4s6MSjSI8NYM4,17235
7
+ jmcomic/jm_downloader.py,sha256=azYkIN-1OuEivZ1TGGDaYo1FkcO5KatSb0g4GVdKSPY,11041
8
+ jmcomic/jm_entity.py,sha256=ZyXVy3mOl9qkxlw6hyshVS3RR-yKfO5BkJHtyBAoKQE,20053
9
+ jmcomic/jm_exception.py,sha256=x3KGMLlQS2zi1GX7z5G58zJN2EwLkI4mAURkxZYjEvA,5055
10
+ jmcomic/jm_option.py,sha256=k9trr4627evFV6t2vnpDC376uomUnKczSJFyAqF1UNo,22037
11
+ jmcomic/jm_plugin.py,sha256=9_EfTOVCk4ey1QQiKjYhFnd6j9XG-YM8rXiN21w-KrU,45374
12
+ jmcomic/jm_toolkit.py,sha256=6eKhqdSY2_gVjxzY_D1790B_xI_aG1kR4w3NMXJNoFk,32228
13
+ jmcomic-2.6.10.dist-info/licenses/LICENSE,sha256=kz4coTxZxuGxisK3W00tjK57Zh3RcMGq-EnbXrK7-xA,1064
14
+ jmcomic-2.6.10.dist-info/METADATA,sha256=0LeWCNRAFOGZ7L1t1ruAjo97xz07T97u1BzO3GAdm_A,9594
15
+ jmcomic-2.6.10.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
+ jmcomic-2.6.10.dist-info/entry_points.txt,sha256=tRbQltaGSBjejI0c9jYt-4SXQMd5nSDHcMvHmuTy4ow,44
17
+ jmcomic-2.6.10.dist-info/top_level.txt,sha256=puvVMFYJqIbd6NOTMEvOyugMTT8woBfSQyxEBan3zY4,8
18
+ jmcomic-2.6.10.dist-info/RECORD,,
@@ -1,18 +0,0 @@
1
- jmcomic/__init__.py,sha256=uYzq8cX-BV_LQ5RFpXSWdmW9yA00SSwdpVQlRA_Olio,902
2
- jmcomic/api.py,sha256=ZduhXDmh4lg1dkXHs7UTAaPpYNO7kcdPCDH5JJT9KSI,4253
3
- jmcomic/cl.py,sha256=PBSh0JndNFZw3B7WJPj5Y8SeFdKzHE00jIwYo9An-K0,3475
4
- jmcomic/jm_client_impl.py,sha256=UpzqO3LD567U7ETs6SpSdCKQS4mvtbCbN6sVwU6DXxk,42301
5
- jmcomic/jm_client_interface.py,sha256=HJPmaY0xdSghPKuTh2CvVjlgJmoW1rubqjysHcOGDHQ,19701
6
- jmcomic/jm_config.py,sha256=8GDETnzQObZabd441Boc--Mb--J2kr7HLxxViKB0DvI,17213
7
- jmcomic/jm_downloader.py,sha256=azYkIN-1OuEivZ1TGGDaYo1FkcO5KatSb0g4GVdKSPY,11041
8
- jmcomic/jm_entity.py,sha256=ZyXVy3mOl9qkxlw6hyshVS3RR-yKfO5BkJHtyBAoKQE,20053
9
- jmcomic/jm_exception.py,sha256=x3KGMLlQS2zi1GX7z5G58zJN2EwLkI4mAURkxZYjEvA,5055
10
- jmcomic/jm_option.py,sha256=jczCX9gmSaTcl1BJLVYe9YN8GIdFYNQQVwDSh4oymto,21503
11
- jmcomic/jm_plugin.py,sha256=9_EfTOVCk4ey1QQiKjYhFnd6j9XG-YM8rXiN21w-KrU,45374
12
- jmcomic/jm_toolkit.py,sha256=2ltGKeJORZ7ARTrC-29nkO9TSu8Kzxdrqj6O28PIw28,31297
13
- jmcomic-2.6.9.dist-info/licenses/LICENSE,sha256=kz4coTxZxuGxisK3W00tjK57Zh3RcMGq-EnbXrK7-xA,1064
14
- jmcomic-2.6.9.dist-info/METADATA,sha256=PUBkNLrDi6UFgp86Y8h3sFrygyAQBRfKkEDN7Zvsvfs,9572
15
- jmcomic-2.6.9.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
16
- jmcomic-2.6.9.dist-info/entry_points.txt,sha256=tRbQltaGSBjejI0c9jYt-4SXQMd5nSDHcMvHmuTy4ow,44
17
- jmcomic-2.6.9.dist-info/top_level.txt,sha256=puvVMFYJqIbd6NOTMEvOyugMTT8woBfSQyxEBan3zY4,8
18
- jmcomic-2.6.9.dist-info/RECORD,,