hect0x7 / JMComic-Crawler-Python

Python API for JMComic | 提供Python API访问禁漫天堂,同时支持网页端和移动端 | 禁漫天堂GitHub Actions下载器🚀
https://jmcomic.readthedocs.io/zh-cn/latest/option_file_syntax/#
MIT License
757 stars 1.75k forks source link

把下载下来的所有webp文件都转成一个pdf文件 #183

Closed cactusycy closed 8 months ago

cactusycy commented 9 months ago

你好,这里有一点疑问。我现在想把下载下来的所有webp文件都转成一个pdf文件。正常的话需要把webp全都手动转成jpg然后使用acrobat打印成pdf。请问这种情况可以在代码中实现吗?我相信不少人和我一样都希望一个章节是一个pdf来观赏网路漫画。感谢!

hect0x7 commented 9 months ago

我觉这个功能也蛮好的,根据你说的,实现分为两步

  1. webp 转 jpg
  2. jpg 通过 acrobat 转为pdf

其中1已实现,所以主要实现2。 但因为我没有使用过你说的acrobat,因此我不太知道要用什么方式来做。 请问你有使用过一些命令行或者代码,来实现过2? 如果你能提供给我一些可行的工具,那么这个功能会很好实现!

cactusycy commented 9 months ago

我觉这个功能也蛮好的,根据你说的,实现分为两步

  1. webp 转 jpg
  2. jpg 通过 acrobat 转为pdf

其中1已实现,所以主要实现2。 但因为我没有使用过你说的acrobat,因此我不太知道要用什么方式来做。 请问你有使用过一些命令行或者代码,来实现过2? 如果你能提供给我一些可行的工具,那么这个功能会很好实现!

回复的好快... 第二个请恕我没有输入全造成你的误解,其实就是Adobe Acrobat DC啦。平时看pdf的那个东东,adobe的阅读器

hect0x7 commented 9 months ago

哈哈,但可惜我也没用过Adobe Acrobat DC这个软件

cactusycy commented 9 months ago

哈哈,但可惜我也没用过Adobe Acrobat DC这个软件

https://blog.csdn.net/wangzirui32/article/details/115419058#:~:text=%E5%9B%BE%E7%89%87%E8%BD%ACPDF%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E4%BB%A3%E7%A0%81%20import%20img2pdf%20img_file%20%3D%20%22myImg.jpg%22%20%23%20%E5%9B%BE%E7%89%87%E8%B7%AF%E5%BE%84,%E7%94%A8%E6%9D%A5%E8%BD%ACPDF%20write_content%20%3D%20img2pdf.convert%28img_file%29%20f.write%28write_content%29%20%23%20%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%20print%28%22%E8%BD%AC%E6%8D%A2%E6%88%90%E5%8A%9F%EF%BC%81

cactusycy commented 9 months ago

哈哈,但可惜我也没用过Adobe Acrobat DC这个软件

https://blog.csdn.net/wangzirui32/article/details/115419058#:~:text=%E5%9B%BE%E7%89%87%E8%BD%ACPDF%E6%A0%BC%E5%BC%8F%E6%96%87%E4%BB%B6%E4%BB%A3%E7%A0%81%20import%20img2pdf%20img_file%20%3D%20%22myImg.jpg%22%20%23%20%E5%9B%BE%E7%89%87%E8%B7%AF%E5%BE%84,%E7%94%A8%E6%9D%A5%E8%BD%ACPDF%20write_content%20%3D%20img2pdf.convert%28img_file%29%20f.write%28write_content%29%20%23%20%E5%86%99%E5%85%A5%E6%96%87%E4%BB%B6%20print%28%22%E8%BD%AC%E6%8D%A2%E6%88%90%E5%8A%9F%EF%BC%81

其实解决方法还蛮多的啦,这只是我搜罗到的一种

hect0x7 commented 9 months ago

嗯,关于我上面说的2,具体来说,是要对一个文件夹下的所有jpg图片(这些图片宽度一致,长度不同),按照顺序合并到一个pdf文件当中。 你找到的好像只是图片转为PDF,并不算完整的解决方案。 这个功能,如果我要自己来造轮子实现,我需要调研一段时间。所以我是希望有现成的工具来帮我完成这一点。 如果你有空的话,可以帮我看看,是否有“完整的解决方案”

hect0x7 commented 9 months ago

该issue的功能请求已实现。 使用方式

  1. 安装一个软件ImageMagick,安装教程:https://github.com/siauu/18-comic-pdf
  2. 配置option,给option加入以下内容
    plugins:
    after_photo:
    - plugin: j2p
      kwargs:
    #        pdf_dir: D:/Desktop/
    #        filename_rule: Pid
    #        quality: 100

完成以上步骤后,正常使用jmcomic下载本子即可。

cactusycy commented 9 months ago

该issue的功能请求已实现。 使用方式

  1. 安装一个软件ImageMagick,安装教程:https://github.com/siauu/18-comic-pdf
  2. 配置option,给option加入以下内容
plugins:
  after_photo:
    - plugin: j2p
      kwargs:
#        pdf_dir: D:/Desktop/
#        filename_rule: Pid
#        quality: 100

完成以上步骤后,正常使用jmcomic下载本子即可。

十分感谢!但似乎这个插件只能对纯英文文件夹起作用。 2023-12-19 11:40:50:【plugin.j2p】execute command: magick convert -quality 100 "D:/Manga/这才不是少女漫画 40/.jpg" "D__pdf218843.pdf" convert: unable to open image 'D:/Manga/这才不是少女漫画 40/.jpg': Invalid argument @ error/blob.c/OpenBlob/3572. convert: no images defined `D__pdf218843.pdf' @ error/convert.c/ConvertImageCommand/3362. 2023-12-19 11:40:50:【plugin.validation】插件 [j2p] 参数校验异常:jpg图片合并为pdf失败!请确认你是否安装了magick,安装网站: [http://www.imagemagick.org/] 2023-12-19 11:40:50:【album.after】本子下载完成: [197289] 在你提到的安装教程中,我使用了那个作者的脚本文件,发现似乎是一样的问题。通过修改文件夹名称,他的WEBP转JPG.bat才得以正常运行。

hect0x7 commented 9 months ago

该issue的功能请求已实现。 使用方式

  1. 安装一个软件ImageMagick,安装教程:https://github.com/siauu/18-comic-pdf
  2. 配置option,给option加入以下内容
plugins:
  after_photo:
    - plugin: j2p
      kwargs:
#        pdf_dir: D:/Desktop/
#        filename_rule: Pid
#        quality: 100

完成以上步骤后,正常使用jmcomic下载本子即可。

十分感谢!但似乎这个插件只能对纯英文文件夹起作用。 2023-12-19 11:40:50:【plugin.j2p】execute command: magick convert -quality 100 "D:/Manga/这才不是少女漫画 40/_.jpg" "D_pdf218843.pdf" convert: unable to open image 'D:/Manga/这才不是少女漫画 40/.jpg': Invalid argument @ error/blob.c/OpenBlob/3572. convert: no images defined `D__pdf218843.pdf' @ error/convert.c/ConvertImageCommand/3362. 2023-12-19 11:40:50:【plugin.validation】插件 [j2p] 参数校验异常:jpg图片合并为pdf失败!请确认你是否安装了magick,安装网站: [http://www.imagemagick.org/] 2023-12-19 11:40:50:【album.after】本子下载完成: [197289] 在你提到的安装教程中,我使用了那个作者的脚本文件,发现似乎是一样的问题。通过修改文件夹名称,他的WEBP转JPG.bat才得以正常运行。

意思是,如果图片所在的文件夹包含非英文,则会报错,是吗? 然后我发现了一个问题,你的pdf_dir参数应该没有生效,对吗?

这两个问题我有空会验证一下,下个版本进行修复。

hect0x7 commented 9 months ago

诶我试了一下,好像非英文文件夹也可以呀

日志如下:

2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00027.webp [27/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00027.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00027.jpg]
2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00011.webp [11/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00011.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00011.jpg]
Active code page: 65001
2023-12-19 16:46:43:【plugin.j2p】Convert Successfully: JM513361 → D:/Desktop/513361.pdf
2023-12-19 16:46:43:【album.after】本子下载完成: [513361]

可以看到图片所在文件夹是包含了中日文的,但是pdf生成成功。

你那边确认会运行失败吗?可以贴一下你的option配置和代码。

cactusycy commented 9 months ago

诶我试了一下,好像非英文文件夹也可以呀

日志如下:

2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00027.webp [27/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00027.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00027.jpg]
2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00011.webp [11/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00011.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00011.jpg]
Active code page: 65001
2023-12-19 16:46:43:【plugin.j2p】Convert Successfully: JM513361 → D:/Desktop/513361.pdf
2023-12-19 16:46:43:【album.after】本子下载完成: [513361]

可以看到图片所在文件夹是包含了中日文的,但是pdf生成成功。

你那边确认会运行失败吗?可以贴一下你的option配置和代码。

我尝试了下载这部漫画,结果依旧 2023-12-19 20:16:25:【plugin.invoke】调用插件: [j2p] 2023-12-19 20:16:25:【plugin.j2p】execute command: magick convert -quality 100 "D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/.jpg" "D__pdf513361.pdf" convert: unable to open image 'D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/.jpg': Invalid argument @ error/blob.c/OpenBlob/3572. convert: no images defined `D__pdf513361.pdf' @ error/convert.c/ConvertImageCommand/3362. 2023-12-19 20:16:25:【plugin.validation】插件 [j2p] 参数校验异常:jpg图片合并为pdf失败!请确认你是否安装了magick,安装网站: [http://www.imagemagick.org/] 2023-12-19 20:16:25:【album.after】本子下载完成: [513361] 我的option如下 client: impl: html domain:

cactusycy commented 9 months ago

诶我试了一下,好像非英文文件夹也可以呀 日志如下:

2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00027.webp [27/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00027.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00027.jpg]
2023-12-19 16:46:40:【image.after】图片下载完成: 513361/00011.webp [11/29], [https://cdn-msp2.18comic.vip/media/photos/513361/00011.webp] → [D:/xxx/[逃亡者×真不可
视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/00011.jpg]
Active code page: 65001
2023-12-19 16:46:43:【plugin.j2p】Convert Successfully: JM513361 → D:/Desktop/513361.pdf
2023-12-19 16:46:43:【album.after】本子下载完成: [513361]

可以看到图片所在文件夹是包含了中日文的,但是pdf生成成功。 你那边确认会运行失败吗?可以贴一下你的option配置和代码。

我尝试了下载这部漫画,结果依旧 2023-12-19 20:16:25:【plugin.invoke】调用插件: [j2p] 2023-12-19 20:16:25:【plugin.j2p】execute command: magick convert -quality 100 "D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/_.jpg" "D_pdf513361.pdf" convert: unable to open image 'D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/.jpg': Invalid argument @ error/blob.c/OpenBlob/3572. convert: no images defined `D__pdf513361.pdf' @ error/convert.c/ConvertImageCommand/3362. 2023-12-19 20:16:25:【plugin.validation】插件 [j2p] 参数校验异常:jpg图片合并为pdf失败!请确认你是否安装了magick,安装网站: [http://www.imagemagick.org/] 2023-12-19 20:16:25:【album.after】本子下载完成: [513361] 我的option如下 client: impl: html domain: - jm-comic.org - jm-comic2.cc - 18comic.vip - 18comic.org client: cache: true domain: [] impl: html postman: meta_data: headers: null impersonate: chrome110 proxies: {} type: cffi retry_times: 5 dir_rule: base_dir: D:\Manga rule: Bd_Pname download: cache: true image: decode: true suffix: null threading: image: 30 photo: 16 log: true plugins: after_photo: - plugin: j2p # jpg图片合成为一个pdf插件 kwargs: pdf_dir: D:/pdf # pdf存放文件夹 filename_rule: Pid # pdf命名规则 quality: 100 # pdf质量,0 - 100

软件确实也安装好了,使用https://github.com/siauu/18-comic-pdf里的脚本也可以转换

hect0x7 commented 9 months ago

我看你报错的原因是magick命令有误

正常应该是这样

magick convert -quality 10 "路径/*.jpg" "路径/513361.pdf"

而你的是

magick convert -quality 10 "路径/.jpg" "路径/513361.pdf"
# 路径/.jpg里少了个 *
hect0x7 commented 9 months ago

我不太清楚为什么你的magick命令会少个*号,你的option并没有问题

cactusycy commented 9 months ago

我不太清楚为什么你的magick命令会少个*号,你的option并没有问题

我在网上查阅了相关资料,是和安装有关系吗?我是直接官网下载的安装包,是不是需要命令行安装呢

hect0x7 commented 9 months ago

我不太清楚为什么你的magick命令会少个*号,你的option并没有问题

我在网上查阅了相关资料,是和安装有关系吗?我是直接官网下载的安装包,是不是需要命令行安装呢

更新jmcomic试试看

pip install jmcomic -i https://pypi.org/project --upgrade
hect0x7 commented 9 months ago

我不太清楚为什么你的magick命令会少个*号,你的option并没有问题

我在网上查阅了相关资料,是和安装有关系吗?我是直接官网下载的安装包,是不是需要命令行安装呢

magick命令少了个*号,应该跟你的安装方式没有关系。因为要执行的magick命令是由jmcomic生成的 但是奇怪之处在于,我这边运行ok,你那边按理说同样的jmcomic版本居然不行。

你先试试看更新jmcomic,如果还是不行,那magick命令复制到cmd下执行试试

cactusycy commented 9 months ago

我不太清楚为什么你的magick命令会少个*号,你的option并没有问题

我在网上查阅了相关资料,是和安装有关系吗?我是直接官网下载的安装包,是不是需要命令行安装呢

magick命令少了个*号,应该跟你的安装方式没有关系。因为要执行的magick命令是由jmcomic生成的 但是奇怪之处在于,我这边运行ok,你那边按理说同样的jmcomic版本居然不行。

你先试试看更新jmcomic,如果还是不行,那magick命令复制到cmd下执行试试

我将整个包删除重装后,号显示正常。然而报错依旧 2023-12-20 13:31:47:【plugin.j2p】execute command: magick convert -quality 100 "D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/.jpg" "D:/Manga513361.pdf" convert: unable to open image 'D:/Manga/[逃亡者×真不可视汉化组] [ガー] 捨て猫を拾ったら (COMIC 快楽天ビースト 2023年12月号) [中国翻訳] [DL版]/*.jpg': Invalid argument @ error/blob.c/OpenBlob/3572. convert: no images defined `D:/Manga513361.pdf' @ error/convert.c/ConvertImageCommand/3362. 可以发现你的magick --version后的结果吗,我想看看是不是版本不同的问题。我的执行结果为 Version: ImageMagick 7.1.1-23 Q16-HDRI x64 54b13e9:20231210 https://imagemagick.org Copyright: (C) 1999 ImageMagick Studio LLC License: https://imagemagick.org/script/license.php Features: Channel-masks(64-bit) Cipher DPC HDRI Modules OpenCL OpenMP(2.0) Delegates (built-in): bzlib cairo flif freetype gslib heic jng jp2 jpeg jxl lcms lqr lzma openexr pangocairo png ps raqm raw rsvg tiff webp xml zip zlib Compiler: Visual Studio 2022 (193732826)

cactusycy commented 9 months ago

更新一下,我发现之前不行的问题是下载下来的原文件夹含有空格,并不是中文的问题

hect0x7 commented 9 months ago

我复现了你的错误,在win11上会报错。但是在win10不会。应该跟magick的version没有关系。

hect0x7 commented 9 months ago

水落石出,是配置问题,我忘了说要把【图片后缀转换】配置为jpg了。 在你的option中加上如下配置即可,实测一配置就成功:

download:
  image:
    suffix: .jpg
cactusycy commented 9 months ago

水落石出,是配置问题,我忘了说要把【图片后缀转换】配置为jpg了。 在你的option中加上如下配置即可,实测一配置就成功:

download:
  image:
    suffix: .jpg

感谢,我的问题接近被解决了,现在的问题是生成的pdf存放的位置不对。似乎只会将路径作为一个前缀 e.g. plugins: after_photo:

把 D:/Manga2 改成 D:/Manga2/

hect0x7 commented 9 months ago

把 D:/Manga2 改成 D:/Manga2/ 即可

cactusycy commented 9 months ago

把 D:/Manga2 改成 D:/Manga2/ 即可

感谢!一切现在都能正常运行了。这几天老发信息打扰你了,祝万事如意!