一个能一键分析批量下载nhentai本子的纯Shell脚本,下完还能自动打包成zip。
主要是给VPS用的,批量快速下完打包然后拉回来一气呵成(。
Head Pic: 「アストルフォきゅん」/「イチリ」
nhentai-one-key-downloader
但由于 shell 脚本仍存在很多问题,不建议使用,有兴趣可以看这个
演示视频
视频约1.7MB
演示内容顺序:
- 模式A 白名单
- 模式B + 断点续传
- 模式A 黑名单 + 查重
准备工作
首先你需要有Linux。。。VPS也可虚拟机也可。
然后用以下命令下载这个脚本:
wget -N --no-check-certificate https://raw.githubusercontent.com/Tsuk1ko/nhentai-one-key-downloader/master/nhentai-batch.sh && chmod +x nhentai-batch.sh
然后用编辑器打开它,自己根据需要修改脚本开头的设置:
#setting off:0 on:1
zad=1 #下载完一个本子后自动压缩成zip
dsaz=1 #压缩完之后删除源文件
dldir="comics" #你想要把本子下载在哪个目录,相对/绝对路径均可
开始使用
这个脚本有两种下载模式。
模式A
从一个nhentai搜索页面,地址类似于https://nhentai.net/search/?q=xxxxxx
,或者其他的什么Tags/Artists/...页面下载本子,反正就是像下面这样的有很多本子结果的页面。
那就执行
./nhentai-batch.sh -a
然后就输入这个网址接着回车就可以了,然后脚本会自动分析页面内的所有本子并且罗列出来并标上序号。如果你输入的网址有误会提示你。
然后会提示你有3种模式来下载本子:
- 白名单模式:下载你指定的本子
- 黑名单模式:除了你指定的本子之外,都下载
- 想个屁模式:我全下了!(列表中有重复的本子也不要紧,由于“查重”功能,只会下载一个)
如果你选择了模式1或者模式2,你需要输入你指定的本子的序号并以空格隔开,最后回车。
模式B
从一个本子详情页,类似https://nhentai.net/g/xxxxxx/
网址的页面下载本子,也就是下图所示的这种页面。
那就执行
./nhentai-batch.sh -b
然后就会提示要你输入网址,按回车换行。你可以批量下载,即输入一个网址-换行-再输入一个网址-换行-……。当你输入一个空行的时候(即连续两次换行)即可结束输入,然后脚本会自动将所有你输入的网址里的本子下载下来。
其他功能
这个脚本带有查重功能和断点续传功能。
也就是说,如果你一个本子下到一半没下完就ctrl+c终止了脚本,那么你下次再下载同样的本子的时候会自动从上次断掉的地方开始下载(会自动检测并删除wget没有下载完全的文件并重新下载)。
已经下好了的图片会直接略过;如果文件夹内有和本子名称同名的压缩包(.zip),则也会判定为这个本子已经下过并跳过。
补充说明
如果在脚本完全运行完之前就ctrl+c结束了脚本,那么
- 在总下载目录里会遗留形如
.nhentai-temp-xxxxx
的文件夹,删除即可 - 在没下完的本子目录里会遗留
.dl
文件,这是用于记录本子下载进度的。如果你删除了,那么下次下载同一个本子的时候就无法识别 wget 是否完整下载了当时强制结束脚本时的那个图片。
TODO
开发网页程序(进行中)
版权声明:本文为原创文章,版权归 神代綺凜 所有。
本文链接:https://moe.best/technology/nhentai-downloader.html
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
求巨巨帮帮忙
你可以用 https://moe.best/projects/nhentai-download-as-zip.html
就算你用 nhder 也是一样的,两者是相同的下载方式
那本超长名字又出错了
因为我之前下载了第一页到20页左右。然后因为输错了,又重复输了进去,然后他又下载了几十本出来,所以怀疑他是不是漏下了?而且因为每一页都是25本,然后每次批量下载的页码好像都对不上。
另一个问题已经修复了
这个是串号了吗?
现在修复了,解决办法就是如果出现错误就截取名字长度至小于 255 字节,虽然这会导致本子名不完整不过也没别的办法了
哦,如果你压缩的话加个后缀长度又会爆,我忘了考虑预留了,下次更新再说吧
我直接复制你 git 上面的写法的话,输入进去,下载一页还是几页,反正从 git 上面下载的会导致503。 但是重点来了,直接手动输入的华下载就是正常的 嗯,写法是一样的,只不过一个是复制 git 的,一个是我手动输入的。 excuse me。
显示下载500多个,然后今天我感觉不对,跑去看的时候发现只占用了52兆,并且只有三个文件夹
下载完成压缩,这个功能好像没有了吧?
[线程号] 已分析完的页数/总共要分析页数 query=搜索词 page=当前页数
下完压缩的功能我不想加
话说,他这个是代表下载的单张图片还是作品?
反正我一台4下载100个这种,然后另一台匙下载500,然后从此以后是90多,反正没100至两三百,不等就会出现这个。
不过这个的话,下载单部作品的确更加方便,批量的话就还是当我没说吧。
[3] Analysis thread
我已经很明确写出了,这个项目的定位是下载器而不是爬虫,我不鼓励大量爬取的行为 所以这个功能我不会加的
我换了一个服务器。然后下载线程1 解析线程家5 还是503.然后都改成一以后就变成这个了。
这个问题挺奇怪的,我只在Centos7上能复现,貌似是因为文件系统的延迟导致获取文件大小是尚未写入完整的文件的大小,导致被判断为不完整的下载,总之大概暴力修复了,再更新试一下
我新写的nhentai下载器你有试试吗 |´・ω・)ノ
后续会有用nodejs实现的计划
另外我是不会做直接爬整个网站这种没有意义功能的,爬下来也看不完……
mkdir: cannot create directory `': No such file or directory
chmod: cannot access `': No such file or directory
Download 1 Completed!(ó﹏ò。)
这个脚本太久远了有bug我也不想修了(
以后有时间会用其他语言重写一个下载脚本(咕咕咕