jmcomic 2.5.10__py3-none-any.whl → 2.5.11__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.5.10'
5
+ __version__ = '2.5.11'
6
6
 
7
7
  from .api import *
8
8
  from .jm_plugin import *
@@ -572,3 +572,15 @@ class JmcomicClient(
572
572
  }
573
573
 
574
574
  yield from self.do_page_iter(params, page, self.categories_filter)
575
+
576
+ def is_given_type(self, ctype: Type['JmcomicClient']) -> bool:
577
+ """
578
+ Client代理的此方法会被路由到内部client的方法
579
+ 即:ClientProxy(AClient()).is_given_type(AClient) is True
580
+ 但是: ClientProxy(AClient()).client_key != AClient.client_key
581
+ """
582
+ if isinstance(self, ctype):
583
+ return True
584
+ if self.client_key == instance.client_key:
585
+ return True
586
+ return False
jmcomic/jm_plugin.py CHANGED
@@ -757,6 +757,49 @@ class ConvertJpgToPdfPlugin(JmOptionPlugin):
757
757
  self.execute_deletion(paths)
758
758
 
759
759
 
760
+ class Img2pdfPlugin(JmOptionPlugin):
761
+ plugin_key = 'img2pdf'
762
+
763
+ def invoke(self,
764
+ photo: JmPhotoDetail,
765
+ downloader=None,
766
+ pdf_dir=None,
767
+ filename_rule='Pid',
768
+ delete_original_file=False,
769
+ **kwargs,
770
+ ):
771
+ try:
772
+ import img2pdf
773
+ except ImportError:
774
+ self.warning_lib_not_install('img2pdf')
775
+ return
776
+
777
+ self.delete_original_file = delete_original_file
778
+
779
+ # 处理文件夹配置
780
+ filename = DirRule.apply_rule_directly(None, photo, filename_rule)
781
+ photo_dir = self.option.decide_image_save_dir(photo)
782
+
783
+ # 处理生成的pdf文件的路径
784
+ if pdf_dir is None:
785
+ pdf_dir = photo_dir
786
+ else:
787
+ pdf_dir = fix_filepath(pdf_dir, True)
788
+ mkdir_if_not_exists(pdf_dir)
789
+
790
+ pdf_filepath = os.path.join(pdf_dir, f'{filename}.pdf')
791
+
792
+ # 调用 img2pdf 把 photo_dir 下的所有图片转为pdf
793
+ all_img = files_of_dir(photo_dir)
794
+ with open(pdf_filepath, 'wb') as f:
795
+ f.write(img2pdf.convert(all_img))
796
+
797
+ # 执行删除
798
+ self.log(f'Convert Successfully: JM{photo.id} → {pdf_filepath}')
799
+ all_img.append(self.option.decide_image_save_dir(photo, ensure_exists=False))
800
+ self.execute_deletion(all_img)
801
+
802
+
760
803
  class JmServerPlugin(JmOptionPlugin):
761
804
  plugin_key = 'jm_server'
762
805
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: jmcomic
3
- Version: 2.5.10
3
+ Version: 2.5.11
4
4
  Summary: Python API For JMComic (禁漫天堂)
5
5
  Home-page: https://github.com/hect0x7/JMComic-Crawler-Python
6
6
  Author: hect0x7
@@ -1,18 +1,18 @@
1
- jmcomic/__init__.py,sha256=aypFKULVYoLdTC7bQbkqx6n2txdn2VebYez4NNaXGbw,903
1
+ jmcomic/__init__.py,sha256=Hjp1Q6tJ5zCFkSqh2ETXJuh_Rgpx5OKEjMhSbrU3dTs,903
2
2
  jmcomic/api.py,sha256=uLHtSof7ZaiWZcNDDAz6grD1NYs4VxsoCOrsge3G7v8,3864
3
3
  jmcomic/cl.py,sha256=PBSh0JndNFZw3B7WJPj5Y8SeFdKzHE00jIwYo9An-K0,3475
4
4
  jmcomic/jm_client_impl.py,sha256=Oszkw7dKfg8DHzmjyBVD1DrHp9OlvLK33IQHB7uXo48,37811
5
- jmcomic/jm_client_interface.py,sha256=f-2pFwJUzEdH4GVG8ExbR0dSoIP4w5M6CjX_Mlbxglc,17234
5
+ jmcomic/jm_client_interface.py,sha256=vP36T2OI5MQdmfdYEnoFGRpHZRTE9LnBetDUFCOnMg4,17691
6
6
  jmcomic/jm_config.py,sha256=I08aDW1WH9uVnbyiUvy4lfI8cAU8NNK96cEA5kGYcoM,15252
7
7
  jmcomic/jm_downloader.py,sha256=0r4z7FRnow6xkRy_WTv7nLQOhYdtZmoouw0BNrhngco,10397
8
8
  jmcomic/jm_entity.py,sha256=-WUKYGkNToQv5Hja3RkI5abHF1g46WpLyVjoyXMs-wI,18974
9
9
  jmcomic/jm_exception.py,sha256=B9APE1jw23JBzCT12eV_imCZny3mNrSXju1p2IquaHA,4801
10
10
  jmcomic/jm_option.py,sha256=s16w8uZYfCBUgsxCjegnLoAqHF69rJicVZKQTZlQTJA,21723
11
- jmcomic/jm_plugin.py,sha256=ufu41XNWrlDvPH6KO1xhBuWxeUViIClP9fuoObJlPl0,32233
11
+ jmcomic/jm_plugin.py,sha256=21bd71tmsKyli73skMx0ozcqBM5saHzICEicjRQ98-Q,33606
12
12
  jmcomic/jm_toolkit.py,sha256=WLHaigCN03Z4b5swGTRTTSWzZsa0uFxGAnw4xKhbh1U,28649
13
- jmcomic-2.5.10.dist-info/LICENSE,sha256=kz4coTxZxuGxisK3W00tjK57Zh3RcMGq-EnbXrK7-xA,1064
14
- jmcomic-2.5.10.dist-info/METADATA,sha256=sT7Fq5PSlsX4SQbMolcmn2JwMurahWu8GmBbQ1m_MLQ,6123
15
- jmcomic-2.5.10.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
16
- jmcomic-2.5.10.dist-info/entry_points.txt,sha256=tRbQltaGSBjejI0c9jYt-4SXQMd5nSDHcMvHmuTy4ow,44
17
- jmcomic-2.5.10.dist-info/top_level.txt,sha256=puvVMFYJqIbd6NOTMEvOyugMTT8woBfSQyxEBan3zY4,8
18
- jmcomic-2.5.10.dist-info/RECORD,,
13
+ jmcomic-2.5.11.dist-info/LICENSE,sha256=kz4coTxZxuGxisK3W00tjK57Zh3RcMGq-EnbXrK7-xA,1064
14
+ jmcomic-2.5.11.dist-info/METADATA,sha256=2vGTgKwdQwztHQ8eIQ9cMOdHb5FTKYCPRZ_uWP6qP0E,6123
15
+ jmcomic-2.5.11.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
16
+ jmcomic-2.5.11.dist-info/entry_points.txt,sha256=tRbQltaGSBjejI0c9jYt-4SXQMd5nSDHcMvHmuTy4ow,44
17
+ jmcomic-2.5.11.dist-info/top_level.txt,sha256=puvVMFYJqIbd6NOTMEvOyugMTT8woBfSQyxEBan3zY4,8
18
+ jmcomic-2.5.11.dist-info/RECORD,,