可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载过的画师的插画。
多线程下载,并且支持使用 HTTP 与 SOCKS 代理。
Head Pic: 「五河琴里」/「秋原ノゾミ Sheila」のイラスト [pixiv]
Pxder
由于 Pixiv 已不再支持客户端的登录 API,请更新到 v2.12.0 及以后的版本以使用新的登录方式
此项目基于 Node.js,姑且算自己学习的副产物(实际上是不务正业的产物
最大的缺点是没有 GUI,纯命令行操作,不过也并不难用(信我)
安装及使用等说明请直接看 Github 项目文档
注意
因P站域名遭到 GFW 的 SNI 阻断,这意味着只要你在大陆内,即便你改了 Hosts 也无法直接使用 pxder,请记得使用pxder --setting
设置代理或启用直连模式
从现在开始所有在评论中询问因未挂代理而产生的问题都将会被无视
版权声明:本文为原创文章,版权归 神代綺凜 所有。
本文链接:https://moe.best/projects/pxder.html
所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。
您可以自由的转载和修改,但请务必注明文章来源并且不可用于商业目的。
Error: Request failed with status code 403
at createError (C:\Users\41941\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\createError.js:16:15)
at settle (C:\Users\41941\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\core\settle.js:17:12)
at IncomingMessage.handleStreamEnd (C:\Users\41941\AppData\Roaming\npm\node_modules\pxder\node_modules\axios\lib\adapters\http.js:244:11)
at IncomingMessage.emit (events.js:208:15)
at endReadableNT (_stream_readable.js:1168:12)
at processTicksAndRejections (internal/process/task_queues.js:77:11)
{
"message": "Request failed with status code 403",
"config": {}
--login
重新登录一次--debug
看具体错误at C:\Users\Alienware\AppData\Roaming\npm\node_modules\pxder\src\downloader.js:209:15
at async C:\Users\Alienware\AppData\Roaming\npm\node_modules\pxder\src\downloader.js:181:5
就感觉有一个卡住了,后面的就下载不了,换了一个画师也是会有一个卡住
https://github.com/Tsuk1ko/pxder/issues/48
(用bat vbs写的头疼,还各种乱码 宝宝心里苦 )
但是发现了一个问题, pxder -u xx , 下载的插画作品不全
264932 这个ID下应该有60+插画, 但是最后只下载了30几个
我下载是这样的33p
如果允许后仍然没有改善,那我也不清楚原因了
你愿意的话可以自行用 ffmepg 处理成 GIF,该处理方法目前还未做到程序中
1.目前我已经用python实现的动图的合成。当然仅限于每张图片停留时间一致的动图,不同时间的尚待处理。我也非常期待能在新版本中能看到这个。
2.下面是我的代码,也有可能是我自作多情,作者早就做出来了,只是并未更新而已,不过能分享自己的代码是件令人快乐的事。
3.个人是做测开和一部分爬虫工作 , 也搭建了博客 , 使用的是hexo的next主题 , 相比于作者的博客就不献丑了.
说到底 , 我只是在前人的道路上行走 , 本着分享的精神展示自己的代码 , 但愿代码能给你提供思路解决问题 , 多少从作者这收益 , 希望能提供到帮助.
1.补充下需要导入的库
import requests
import json
import zipfile
import imageio
import os
分别是http请求,json处理,zip处理,图片处理,文件系统处理模块
转 gif 的功能其实我有做过,但是 gif 成品大小和质量实在无法让人满意,所以最终没有放入程序中,你可以看下这个 issue
后来和大家讨论的结果是用 ffmpeg 来做是比较优雅的,而且可以满足转 gif 和 mp4 两种需求,不过暂时还没做,最近也不太想做
总之感谢分享
用一个变量储存当前下载的作者uid,缓存目录下根据uid创建文件夹,图片先下载到这个文件夹,
下载完之后删除缓存目录+'/'+uid
每次开始下载时判断是否存在缓存目录+'/'+uid这个文件夹,如果存在则continue;跳过,
这样实现了程序多开同时下载
最后我加了个tmpjson的写入,每次获取关注就写入一次,
就不用因为没有一次性获取完没有把tmpjson写入而导致重新获取
其他的简单的修改就是我改了下线程限制,我觉得32线程太少了,我改成上限320,默认64了
(描述的不够详细的话可以回复我,我录制使用视频)
at addToFollows (C:\Users\86243\AppData\Roaming\npm\node_modules\pxder\src\index.js:202:31)
at runMicrotasks ()
at processTicksAndRejections (internal/process/task_queues.js:94:5)
at async PixivFunc.getMyFollow (C:\Users\86243\AppData\Roaming\npm\node_modules\pxder\src\index.js:214:4)
at async PixivFunc.getAllMyFollow (C:\Users\86243\AppData\Roaming\npm\node_modules\pxder\src\index.js:249:21)
at async PixivFunc.downloadFollowAll (C:\Users\86243\AppData\Roaming\npm\node_modules\pxder\src\index.js:302:4)
at async C:\Users\86243\AppData\Roaming\npm\node_modules\pxder\bin\pxder:71:22
目前我从https://tools.ipip.net/dns.php获取到真实IP
210.140.131.223 app-api.pixiv.net
现状是
www.pixiv.net
有污染和阻断,app-api.pixiv.net
只有污染,i.pximg.net
正常,pxder 只需要连接app-api.pixiv.net
和i.pximg.net
,只要保证app-api.pixiv.net
的 DNS 解析正常即可