找回密码
 立即注册
查看: 4382|回复: 16

[漫画] 写了一个脚本,爬取Ehentai上的收藏并下载

[复制链接]
     
发表于 2022-6-10 20:40 | 显示全部楼层 |阅读模式
本帖最后由 昊天昱明 于 2022-6-10 20:40 编辑

因为eh上我收藏的本子经常消失被删除,所以一直想着把自己的收藏都下下来。找了半天没有合适的现成的方法,自己又笨不太会写
前几天我折腾komga的时候,因为这个软件不会爬取元数据,就想着自己想想办法,然后看到了之间加星但没有一直更新的 这个,一个calibre的eh元数据插件最近更新了,就下了下来自己琢磨了几天写了个脚本
地址在这:https://github.com/nhysteric/Ehentai_Favorites_Spider

教程我直接放readme.md了,不知道泥潭能不能渲染

### 简介

抓取用户Ehentai收藏的画廊及其元数据,并通过qbittorrent下载这些画廊。

##### 来源

抓取元数据以及翻译标签的功能改写自 [nonpricklycactus/Ehentai_metadata](https://github.com/nonpricklycactus/Ehentai_metadata)
直接下载画廊的功能改写自 [HIbian/Simple_Ehentai_DownLoader](https://github.com/HIbian/Simple_Ehentai_DownLoader)
标签翻译库来自 [EhTagTranslation/Database](https://github.com/EhTagTranslation/Database)

##### 依赖的软件与库

* **python3**,以及下列依赖库
  * lxml 4.9.0
  * mechanize 0.4.8
  * qbittorrent_api 2022.5.32
  * requests 2.27.1
* **qbittorrent**,并确保打开远程访问
* 最好也安装**sqlite**,以便在爬取出错时手动修改

##### 工作流程

脚本通过cookie登录Exhentai,扫描抓取收藏页面的画廊,将这些画廊的元数据录入sqlite数据库中。之后会调用qbittorrent下载含有磁链的画廊。如果画廊没有磁链或是所有磁链都无法成功完成下载,脚本会通过网页下载画廊图片,并将其打包为``.zip``格式
下载好的画廊文件会被存放到相应的漫画库文件夹,你也可以将其他来源的压缩文件存放到文件夹中,脚本会记入它们。画廊文件通过下列格式存放到漫画库文件夹:
"[艺术家名] 标题名.ext",如果没有艺术家则只会有标题。它们会被存放到漫画库文件夹下与它们名字相同的子文件夹中,如下所示:

Manga

├──[artist1] title1

│     └── [artist1] title1.zip

├──[artist2] title2

│     └── [artist2] title2.rar

├──title3

│     └── title3.7z


请注意,"[艺术家名]"与"标题名"之间含有空格,这些名字以数据库中的表项为准,建议先建立数据库表,根据表项修改名称后再导入。
另外,画廊标题中诸如"?"、"\\"的非法路径字符会在文件名中被删去,在数据库中则仍会保留

### 如何使用

##### 参数设置

打开`config.py`,根据需要设置下列字段

* `Proxy` 代理
* `ipb_member_id` `ipb_pass_hash` `igneous` Ex cookie值

* `local_mangaPath` 本地漫画库文件夹路径,如果实际存放在远端,需要映射到本地
* `local_downloadPath` 本地下载文件夹路径,如果实际存放在远端,需要映射到本地
* `remote_mangaPath` 安装有qbittorrent的主机的远端漫画库文件夹路径
* `remote_downloadPath` 安装有qbittorrent的主机的远端下载路径
  如果你将qbittorrent安装在本地,则本地路径与远端路径是一样的,但如果你使用Docker安装qbittorrent,则远端路径为Docker容器下路径,并确保上述文件夹映射到容器
* `favoritesDB` 存放画廊收藏元数据的数据库的绝对路径,可以使用`sqlite`创建,也可以使用本脚本文件夹下``\db``文件夹中的空数据库``Eh.db``
* `translationDB`标签翻译库的绝对路径,本脚本文件夹下``\db``文件夹包含
* `qbt_host`qbittorrent主机
* `qbt_port`qbittorrent端口
* `qbt_username`qbittorrent用户名
* `qbt_password`qbittorrent密码
* `timeLimit`qbittorrent磁链下载期限,以天为单位,磁链下载时间超过该值且没有完成则删除本链接并使用下一个磁链(如果有的话)。请根据网络情况与种子活跃度酌情设置
* `maxDownloadCount`qbittorrent最大下载数,注意这不是qbittorrent同时下载数,而是发送给qbittorrent的最大任务数。请结合qbittorrent的同时下载数设置
* `directDownloadLimit`一次脚本运行期间通过网页直接下载的画廊数,是为了防止因为下载时间过长出错而设置
* `deleteAfterDownload`通过网页直接下载的画廊打包为``.zip``后,是否要删除下载的原始图片数据

##### 使用

在脚本文件夹下使用命令行键入
```> python _init_.py```
脚本运行会出现输入提示,第一次使用,要键入```0```,脚本会在数据库中建表并爬取所有的收藏画廊元数据,之后进行下载流程。脚本录入数据库时会逐一检测是否已录入,当收藏画廊数过多时可能会耗费一定时间。如果只是将本地文件导入以及进行下载,则可以键入```1```,或是使用命令行参数
```> python _init_.py -i```
可以使用计划任务来使脚本周期性运行
如果没有安装```sqlite```,可以使用[这个](https://inloop.github.io/sqlite-viewer/)来查看数据库



##### 已知的问题

* 画廊录入数据库后,画廊的元数据的更新,对画廊取消收藏等操作,脚本不会做出反应
* 没有完善的异常抛出机制与运行log记录



评分

参与人数 4战斗力 +6 收起 理由
冰箱研会长 + 1 有用
Jebmc + 1
千本blur + 2 有用
DEMOxN + 2

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2022-6-10 20:41 | 显示全部楼层
运行界面不放了,怕暴露xp
回复

使用道具 举报

     
发表于 2022-6-10 21:01 | 显示全部楼层
回复

使用道具 举报

     
发表于 2022-6-10 21:07 | 显示全部楼层
厉害。。。
回复

使用道具 举报

     
发表于 2022-6-10 21:18 | 显示全部楼层
我借贴问一下大手子,为什么我在IPAD上的SAFARI无法登录EXHENTAI,连表站都上不去,论坛倒是能登陆
回复

使用道具 举报

     
发表于 2022-6-10 21:24 来自手机 | 显示全部楼层
能不能把ehentai的全站都扒了,然后做个数据库搜索功能,按照收藏排序的那种?
回复

使用道具 举报

     
发表于 2022-6-10 21:24 来自手机 | 显示全部楼层
现在ehviewer的搜索功能太弱了
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-6-10 22:43 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2022-6-10 22:52 | 显示全部楼层
wornixxoo 发表于 2022-6-10 21:18
我借贴问一下大手子,为什么我在IPAD上的SAFARI无法登录EXHENTAI,连表站都上不去,论坛倒是能登陆 ...

没有挂梯子吧,我不挂梯子可以访问论坛,挂了才可以访问表站
现在裸连不上了,而且梯子也必须是欧美的
至于里站,需要cookie才行,safari可以设置cookie吗?
回复

使用道具 举报

     
发表于 2022-6-10 22:54 | 显示全部楼层
昊天昱明 发表于 2022-6-10 22:52
没有挂梯子吧,我不挂梯子可以访问论坛,挂了才可以访问表站
现在裸连不上了,而且梯子也必须是欧美的
至 ...

奇怪的是,我用了梯子,同样是IPAD上的CHROME就能上表站和里站,SAFARI就不行,关键是EHUNTER只有SAFARI版本
回复

使用道具 举报

     
 楼主| 发表于 2022-6-10 23:00 | 显示全部楼层
gouchaoer 发表于 2022-6-10 21:24
能不能把ehentai的全站都扒了,然后做个数据库搜索功能,按照收藏排序的那种? ...

你可以试一下,把代码里面爬取的页面url改成主页的就行。不过我没有记录收藏数,还要再改
回复

使用道具 举报

     
 楼主| 发表于 2022-6-10 23:55 | 显示全部楼层
wornixxoo 发表于 2022-6-10 22:54
奇怪的是,我用了梯子,同样是IPAD上的CHROME就能上表站和里站,SAFARI就不行,关键是EHUNTER只有SAFARI ...


我这边没有问题,我用的是局域网代理
回复

使用道具 举报

     
发表于 2022-6-11 00:56 来自手机 | 显示全部楼层
还是更想要个支持一键下整个收藏夹的archive原档的反正GP管够。
毕竟都下载了还下压过的图不太对味,扒网页的话又容易触发反爬虫。
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-6-11 01:22 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-6-11 01:47 | 显示全部楼层
gouchaoer 发表于 2022-6-10 21:24
能不能把ehentai的全站都扒了,然后做个数据库搜索功能,按照收藏排序的那种? ...

话说e站现在全部多少本子啊?
回复

使用道具 举报

头像被屏蔽
     
发表于 2022-6-11 01:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2022-6-11 08:03 | 显示全部楼层
本帖最后由 冰箱研会长 于 2022-6-11 08:22 编辑

有没有人能代下个100mb左右的原档
Langrisser Complete I II III
大概换算成人民币是多少

改了下楼主脚本爬下来了。。。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-5-14 20:28 , Processed in 0.073608 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表