RssHub + Feebro + PPD 实现自动下载P站图片
忆律器Moelody
2020年04月12日 16:42
收录于文集
共1篇

很早之前我就想要一个Rss订阅P画师后就自动下载更新后的插画,但一直没有人做相关的软件或是脚本。网上有一些批量下载的工具比如仙尊的PPD和Pxer,但是它们都要手动去下载,画师更新后你又要手动重新抓取,这个过程其实非常浪费时间(尤其是关注了很多画师的那种)。

PPD(Powerful Pixiv Downloader)

我们上面提到了了两个工具,其中PPD的抓取功能比同类的工具要强很多,可以自定义很多选项,这无疑是最好的选择。

我们可以去谷歌商店或是github上下载。现在我们有了下载工具,但却缺少rss的订阅功能。

超好用有没有

Feedbro

提到rss相信大家多多少少都知道一点,不懂的朋友可以问度娘。

市面上比较出名的几款rss阅读主要是Feedly、Inoreader等等,但是网上大多数阅读器要好用点就要收费,并且有诸多限制。没有限制且免费的,要么就是想TinyTinyRss这种自己搭的,要么就是只能本地用的如Feedbro。而我们这里只是想要用来下图用,所以本地的足够了。

Feedbro是一款本地用rss阅读器的谷歌插件,你别看它长的不怎么样,但是它的速度和功能吊打以上那些花里胡哨的,我们可以去谷歌商店找到它,它是全英文的,如果你需要汉化可以去吾爱找到,接下来我们需要一个订阅源。

丝滑般流畅

RssHub

RssHub近些年来新出的一款神器,DIYgod专属打造,号称万物皆可 RSS,实际上它也成功实现了大部分网站的订阅源(跪抱大腿),我们可以去谷歌商店搜RSSHub Radar找到。

我们以极道画师为例子,把用户动态文档里示例的rsshub.app/pixiv/user/11里的id换成7140895,然后用feedbro订阅到画师目录里,就可以得到上面那个页面

这里要点击find feeds来获取,也可以去feed里添加

自定义规则+自改脚本

完成以上工作,我们离成功也不远了。

接下来我们就要用feedbro强大的自定义规则了,我们添加一个名叫自动下载的规则,并规定当画师这个文件夹有新文章时,并且满足内容不为空,就完成一个Action动作,这里的Action是我自己汉化的,并且是没有后台打开链接这个选项的。

为什么要添加一个打开链接的动作,而是直接下载图片呢?这就跟我们上面说的PPD相关了,我们之所以选择PPD,不单单是它的抓取能力同时它也能把动图转化为多种格式,还能自定义文件名并分类十分方便,而这些跟它的下载功能都息息相关。如果我们只是单纯的抓取原图地址,就只能得到一些未处理的图片。而PPD的强大功能只能打开相关网页才能使用,因为这涉及到了跨域下载的问题,有兴趣的同学可以自行搜索。

接下来,我们要做的就是去源文件里添加一个动作,我们通过管理扩展找到feedbro,用ID来找源文件的位置。

mefgmmbdailogpfhfblcnnjfmnpnmdfa

根据自己的浏览器来找,我这里是百分

我们打开reader.html,找到id为actiontemplate的标签,并添加一个value为10的选项

之所以用10是因为原作者跳过了这个10,这个10就空出来了,我也不知道他怎么想的

接下来我们去scripts-core/feedbro.min.js文件里添加功能,打开这个文件后你可能会看到一坨挤到一起的代码,为方便观察我这里将文本格式化了一下,我们可以通过搜索“10”,找到两个判断语句,我们把这两个语句删掉或是注释掉

删删删!!其实不删也行

接下来我们搜索"highlight-text&#​34;找到相应动作的位置,我们在q==9下面加上选项为10时的动作,注意if else都不能少括号。

if(q==10){let id=0;chrome.windows.getCurrent((function(window){id=window.id}));chrome.windows.create({url:r.link,left:100,top:70,height:230,width:502,focused:false},(function(window){chrome.windows.update(id,{focused:true})}))}else{

这个括号放到后面

你可以格式化后像我这样加,也可以把上面那坨加进去

好了,这样一来画师这个目录一有新文章即画师发布了新作品,就会在后台打开相应链接。接下来我们就要想办法让PPD自动下载这个链接里的图片。下一步之前我们先把PPD里的下载选项先改好,下面是我的配置(不需要和我一样)

根据自己喜好来

同样的,我们找到PPD源文件位置,打开js/content.js,找到new InitPage(),并在后面加上

window.onload = function() { if (_PageType__WEBPACK_IMPORTED_MODULE_1__['pageType&#​39;].getPageType() == 1) {

document.getElementById('quick_down_btn&#​39;).click()

}}

这个函数实现了打开相应作品链接后模拟点击快速下载的功能。

模拟点击,只适用与作品页

最后我们找到checkContinueDownload函数,并在最后加上

chrome.runtime.sendMessage({msg: 'quick_close&#​39;});

向浏览器发消息

最后我们来到js/background.js找到runtime.onMessage这个函数

并添加上静默关闭的功能

// 静默关闭

if(msg.msg==="quick_close&#​34;){chrome.windows.getCurrent((function(window){if(window.id!==sender.tab.windowId){chrome.windows.remove(sender.tab.windowId)}}))}

下载完就关

修改保存完后重启浏览器,这样就成功实现rss后台打开网页,PPD自动下载,下载后并关闭的功能。

上述修改虽然简单,但是插件更新后会被覆盖,所以你可以选择关闭插件的自动更新或者是把修改内容记录下来,更新后再次修改。要是嫌麻烦,๑乛◡乛๑找作者去啊


文中提到的扩展下载地址

RssHub Radar:https://chrome.google.com/webstore/detail/rsshub-radar/kefjpfngnndepjbopdmoebkipbgkggaa 

Feedbro: https://chrome.google.com/webstore/detail/feedbro/mefgmmbdailogpfhfblcnnjfmnpnmdfa

Powerful Pixiv Downloaderhttps://chrome.google.com/webstore/detail/powerful-pixiv-downloader/dkndmhgdcmjdmkdonmbgjpijejdcilfh