神代綺凛

[Pxder] Pixiv 插画下载器
可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载...
扫描右侧二维码阅读全文
24
2018/08

[Pxder] Pixiv 插画下载器

可按根据指定画师 UID 解析并下载插画(包括动图)、一键下载所有你关注的画师的插画或收藏的插画、智能增量更新下载过的画师的插画。

多线程下载,并且支持使用 HTTP 与 SOCKS 代理。

Head Pic: 「五河琴里」/「秋原ノゾミ Sheila」のイラスト [pixiv]

Pxder

由于 Pixiv 已不再支持客户端的登录 API,请更新到 v2.12.0 及以后的版本以使用新的登录方式

运行示例

此项目基于 Node.js,姑且算自己学习的副产物(实际上是不务正业的产物

最大的缺点是没有 GUI,纯命令行操作,不过也并不难用(信我)

安装及使用等说明请直接看 Github 项目文档

注意

因P站域名遭到 GFW 的 SNI 阻断,这意味着只要你在大陆内,即便你改了 Hosts 也无法直接使用 pxder,请记得使用pxder --setting设置代理或启用直连模式

从现在开始所有在评论中询问因未挂代理而产生的问题都将会被无视

搬瓦工VPS优惠套餐,建站稳如狗,支持支付宝,循环出账94折优惠码BWH3HYATVBJW
年付$47CN2线路,1核/1G内存/20G硬盘/1T@1Gbps【点击购买
季付$47CN2 GIA线路,1核/1G内存/20G硬盘/1T@2.5Gbps【点击购买
Last modification:February 12th, 2021 at 05:31 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

414 comments

  1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.163(Google Chrome 80.0.3987.163)
    大佬,现在无法使用了?中午还用着
    1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.163(Google Chrome 80.0.3987.163)
      @JIN https://oauth.secure.pixiv.net/auth/token
      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": {}
      1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 85.0.4183.83(Google Chrome 85.0.4183.83)
        @JIN--login重新登录一次
        1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.163(Google Chrome 80.0.3987.163)
          @神代綺凜 重新登录不上Σ(っ °Д °;)っ
          1. JIN  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.163(Google Chrome 80.0.3987.163)
            @JIN 可以了,不知道为啥关了直连模式了|´・ω・)ノ 谢谢大佬神速
    2. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 85.0.4183.83(Google Chrome 85.0.4183.83)
      @JIN 并没什么问题
  2. Aster  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 86.0.4240.75(Google Chrome 86.0.4240.75)
    大佬你好,我下载的时候收集画师信息没问题,可是到下载图片的时候下不到10个画师就会自动停下来,关掉窗口重新输入命令也是下不到10个画师又自动停下来。换不同代理、直连都没有改善
  3. 刷新球  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 81.0(Firefox 81.0)
    大佬代理都正常,收集数据也正常,但是一下载就是一串黄色,然后显示etwork error,试了各种办法都不好使
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 85.0.4183.83(Google Chrome 85.0.4183.83)
      @刷新球--debug看具体错误
      1. 刷新球  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 81.0(Firefox 81.0)
        @神代綺凜 Error: Incomplete download
        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
        就感觉有一个卡住了,后面的就下载不了,换了一个画师也是会有一个卡住
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 85.0.4183.83(Google Chrome 85.0.4183.83)
          @刷新球 你是下载到本地磁盘还是网络磁盘
          1. 刷新球  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 81.0(Firefox 81.0)
            @神代綺凜 是本地磁盘
            1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 85.0.4183.83(Google Chrome 85.0.4183.83)
              @刷新球 修了,更新试试
              1. 刷新球  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 81.0(Firefox 81.0)
                @神代綺凜 谢谢大佬,辛苦了
  4. Irori  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 81.0.4044.113(Google Chrome 81.0.4044.113)
    该评论仅登录用户及评论双方可见
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.125(Google Chrome 84.0.4147.125)
      @Irori 直连模式和代理不要同时开
      1. Irori  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 81.0.4044.113(Google Chrome 81.0.4044.113)
        @神代綺凜
        该评论仅登录用户及评论双方可见
  5. alabao  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 84.0.4147.135(Google Chrome 84.0.4147.135)
    6到起飞
  6. 刷新球  Windows 10 x64 Edition(Windows 10 x64 Edition) / Firefox 79.0(Firefox 79.0)
    大佬好像安装不了了,卡在[..................] / rollbackFailedOptional: verb npm-session 30f96e8cc6b52ace这一步了
  7. Bolero  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.89(Google Chrome 84.0.4147.89)
    zip转mp4, gif, webp 批量转换脚本
    https://github.com/Tsuk1ko/pxder/issues/48
    1. Bolero  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 84.0.4147.89(Google Chrome 84.0.4147.89)
      @Bolero 以前用各种奇技淫巧生成动图,最近发现用powershell是最简单的
      (用bat vbs写的头疼,还各种乱码 宝宝心里苦
  8. 554519205  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 83.0.4103.116(Google Chrome 83.0.4103.116)
    大佬你好,请问有没有办法设置只下载R18图片和不下载动图的?有时动图太大下载直接卡住了。谢谢!
  9. KK  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 83.0.4103.116(Google Chrome 83.0.4103.116)
    大佬你好我想问下,下载一个画师的图片时提示Socket closed是咋回事,因为动图太多了?
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 83.0.4103.61(Google Chrome 83.0.4103.61)
      @KK 画师P站地址发一下
  10. GAted0  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 83.0.4103.61(Google Chrome 83.0.4103.61)
    希望可以增加批次下载,收藏的图片过多,容易报错,希望可以每1000张为一段下载,分批次下载
  11. akrai  Android 10(Android 10) / Google Chrome 57.0.2987.108(Google Chrome 57.0.2987.108)
    把压缩包文件转换为webp这种新格式的动态图如何,我自己手动转换了一下webp格式比原图甚至要少一半的空间,而且是无损的
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 81.0.4044.113(Google Chrome 81.0.4044.113)
      @akrai 会安排在计划中
    2. akrai  Android 10(Android 10) / Google Chrome 57.0.2987.108(Google Chrome 57.0.2987.108)
      @akrai 真的是相当的amazing啊
  12. 花火  Windows 10 x64 Edition(Windows 10 x64 Edition) / Microsoft Edge 18.18363(Microsoft Edge 18.18363)
    谢谢分享
  13. Cloudiver  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 79.0.3945.117(Google Chrome 79.0.3945.117)
    谢谢分享, 软件挺方便的.
    但是发现了一个问题, pxder -u xx , 下载的插画作品不全
    264932 这个ID下应该有60+插画, 但是最后只下载了30几个
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.149(Google Chrome 80.0.3987.149)
      @Cloudiver 并没有呀,正常的,该画师目前共有 115 个作品,下载器算 p 一共 154p

      1. Cloudiver  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 79.0.3945.117(Google Chrome 79.0.3945.117)
        @神代綺凜
        我下载是这样的33p
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.163(Google Chrome 80.0.3987.163)
          @Cloudiver 检查下你的帐号是否在设置中限制了浏览 R18 作品,我发现你解析出来的没有 R18 作品

          如果允许后仍然没有改善,那我也不清楚原因了

          1. Cloudiver  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 79.0.3945.117(Google Chrome 79.0.3945.117)
            @神代綺凜 谢谢,可以了。
    2. 云梦影  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 78.0.3904.108(Google Chrome 78.0.3904.108)
      @Cloudiver 我也遇到了相同的情况唉,我发现下载的作品数量和未登录时展示的插画数量一样?登陆之后就会显示更多,但是我在pxder里面已经显示登陆成功了啊
  14. 星星星殒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.44(Opera 66.0.3515.44)
    大佬,请问能否增加一个选择原图的设置选项…现在下的都是压过的jpg
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.132(Google Chrome 80.0.3987.132)
      @星星星殒 怎么个压法,这不是原图?

      1. 星星星殒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.44(Opera 66.0.3515.44)
        @神代綺凜 抱歉抱歉,是p站本身没存高清图…高清版本png应该大多是别的渠道获取的
        1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.132(Google Chrome 80.0.3987.132)
          @星星星殒 fanbox 吧,赞助画师即得高清原图
  15. 叶月千夏  Windows 7 x64 Edition(Windows 7 x64 Edition) / Google Chrome 69.0.3497.100(Google Chrome 69.0.3497.100)
    大佬。下的动图是ZIP格式怎么处理啊。。
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.122(Google Chrome 80.0.3987.122)
      @叶月千夏 P站的动图原本就是按帧播放静止画,而不是 GIF,下下来的 ZIP 里面包含了所有帧

      你愿意的话可以自行用 ffmepg 处理成 GIF,该处理方法目前还未做到程序中

      1. coder-sakura  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 70.0.3538.25(Google Chrome 70.0.3538.25)
        @神代綺凜 关于动图合成方面的一些建议和代码(python)
        1.目前我已经用python实现的动图的合成。当然仅限于每张图片停留时间一致的动图,不同时间的尚待处理。我也非常期待能在新版本中能看到这个。

        2.下面是我的代码,也有可能是我自作多情,作者早就做出来了,只是并未更新而已,不过能分享自己的代码是件令人快乐的事。

        # 动图信息的获取接口
        zip_url = 'https://www.pixiv.net/ajax/illust/{}/ugoira_meta'.format(pid)
        # http请求,获取到接口返回的信息
        zip_resp = requests.get(zip_url).text
        # json格式化
        zip_json = json.loads(zip_resp)
        # 获取压缩包地址
        zip_originalSrc= zip_json["body"]["src"]
        # 获取第一张图片的停留时间并计算出帧率
        # key:frames对应的是每张图片的停留时间,0则是第一张,以此类推
        # 因为在使用imageio(python处理图像的一个第三方库)出现了异常,所以我折中进行了这样的处理
        # 这让我很头疼,原因尚未查明.
        # 转换停留时间为合成gif的帧率
        delay = 1/(zip_json["body"]["frames"][0]['delay']/1000)
        # ......
        # 下载zip的http代码和解压zip的io代码略过
        # ......
        # 如果没记错的话,解压出来的是jpg格式
        # 之前曾尝试过强转png格式
        # 但是图片质量没有多大变化,但大小却提高很多
        # gif_name:gif名称
        gif_name = folder_id + '.gif'   
        # 用来存储需要合成gif的图片的文件流的一个列表
        frames = []
        # 获取解压目录下所有待合成图片
        files = os.listdir(zip_path)
        # 做一个简单循环,将所有待合成图片以io形式打开,并逐个添加到上面的frames中
        for image_num in range(1,len(files)):
            frames.append(imageio.imread(files[image_num]))
        # 使用imageio快速转化gif格式
        # 参数分别是: gif名称,待合成流的列表,类型(GIF),fps也就是帧率
        imageio.mimsave(gif_name, frames, 'GIF', fps  = delay) # 间隔
        # 到这里已经完成动图的合成了
        # 剩下的工作就是删除压缩包和解压的图片了

        3.个人是做测开和一部分爬虫工作 , 也搭建了博客 , 使用的是hexo的next主题 , 相比于作者的博客就不献丑了.
        说到底 , 我只是在前人的道路上行走 , 本着分享的精神展示自己的代码 , 但愿代码能给你提供思路解决问题 , 多少从作者这收益 , 希望能提供到帮助.

        1. coder-sakura  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 70.0.3538.25(Google Chrome 70.0.3538.25)
          @coder-sakura 刚回复完, 看到代码样式真是吓了一跳.

          1.补充下需要导入的库
          import requests
          import json
          import zipfile
          import imageio
          import os
          分别是http请求,json处理,zip处理,图片处理,文件系统处理模块

          1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.132(Google Chrome 80.0.3987.132)
            @coder-sakura 由于自己魔改的原因,要刷新一下页面才会出正常的代码高亮(

            转 gif 的功能其实我有做过,但是 gif 成品大小和质量实在无法让人满意,所以最终没有放入程序中,你可以看下这个 issue

            后来和大家讨论的结果是用 ffmpeg 来做是比较优雅的,而且可以满足转 gif 和 mp4 两种需求,不过暂时还没做,最近也不太想做

            总之感谢分享

  16. 流毒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.72(Opera 66.0.3515.72)
    大佬你好,我自作主张修改了一些代码,我想说下大致修改
    用一个变量储存当前下载的作者uid,缓存目录下根据uid创建文件夹,图片先下载到这个文件夹,
    下载完之后删除缓存目录+'/'+uid
    每次开始下载时判断是否存在缓存目录+'/'+uid这个文件夹,如果存在则continue;跳过,
    这样实现了程序多开同时下载
    最后我加了个tmpjson的写入,每次获取关注就写入一次,
    就不用因为没有一次性获取完没有把tmpjson写入而导致重新获取
    其他的简单的修改就是我改了下线程限制,我觉得32线程太少了,我改成上限320,默认64了
    (描述的不够详细的话可以回复我,我录制使用视频)
    1. 流毒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.72(Opera 66.0.3515.72)
      @流毒
      该评论仅登录用户及评论双方可见
  17. 流毒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.72(Opera 66.0.3515.72)
    TypeError: data.user_previews is not iterable
    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
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 80.0.3987.87(Google Chrome 80.0.3987.87)
      @流毒 是不是没有关注啊……
    2. 流毒  Windows 10 x64 Edition(Windows 10 x64 Edition) / Opera 66.0.3515.72(Opera 66.0.3515.72)
      @流毒 重新安装了pxder也是这样orz
  18. 小千东  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 79.0.3945.130(Google Chrome 79.0.3945.130)
    大佬,可不可以增加一个功能:按照pid大量下载图片时,若是画师已经删除了作品,就会跳过这个pid(现在只要pid里存在删除的作品就不会执行下载,很不方便)MK
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 79.0.3945.130(Google Chrome 79.0.3945.130)
      @小千东 已在 v2.7.8 修复
      1. 小千东  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 79.0.3945.130(Google Chrome 79.0.3945.130)
        @神代綺凜 感谢
  19. Rorical  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 78.0.3904.87(Google Chrome 78.0.3904.87)
    不知道大佬用的什么接口,但是好像可以用IP访问到app-api.pixiv.net(目前210.140.131.223),所以能不能直接改DNS?
    目前我从https://tools.ipip.net/dns.php获取到真实IP
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 79.0.3945.117(Google Chrome 79.0.3945.117)
      @Rorical 可以,你可以直接用一个无污染的 DNS,或者改 hosts 210.140.131.223 app-api.pixiv.net

      现状是www.pixiv.net有污染和阻断,app-api.pixiv.net只有污染,i.pximg.net正常,pxder 只需要连接app-api.pixiv.neti.pximg.net,只要保证app-api.pixiv.net的 DNS 解析正常即可

  20. MoeFox  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 71.0.3578.98(Google Chrome 71.0.3578.98)
    你好大佬,我在国外为什么用户名跟密码是正确的却提示出Login fail! Please check your input or proxy setting.?
    1. 神代綺凜  Windows 10 x64 Edition(Windows 10 x64 Edition) / Google Chrome 78.0.3904.108(Google Chrome 78.0.3904.108)
      @MoeFox 我刚试了登陆没有问题,用户名写邮箱