Greasy Fork

Greasy Fork is available in English.

pixiv快速打开原图&自动收藏

通过Ctrl+右键快速打开pixiv图片原图(支持打开动态图的封面,但无法打开动态图),同时收藏此图片

当前为 2021-05-30 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name            pixiv快速打开原图&自动收藏
// @description     通过Ctrl+右键快速打开pixiv图片原图(支持打开动态图的封面,但无法打开动态图),同时收藏此图片
// @version         0.4
// @namespace       Pikaqian
// @author          Pikaqian
// @include         *://www.pixiv.net/*
// @include         *://www.pixivision.net/*
// @icon            https://www.pixiv.net/favicon.ico
// @grant           GM_setClipboard
// ==/UserScript==

(function() {
    'use strict';

    var match_rules=[
        /([_=:;&\-\/\.\?\d\w]+?illust_id=(\d+)(?:&|$|))/,
        /(http(?:s|):\/\/[_\-\/\.\d\w]+?\/(\d{4,})_p\d{1,4}[_\-\/\.\d\w]*)/
    ];
    window.addEventListener('contextmenu',function (event) {
        var el = event.target
        if (el != null) {
            var url,pid,HTML,results
            if(event.ctrlKey){
                HTML=el.outerHTML
                for(var i in match_rules){
                    results=HTML.match(match_rules[i])
                    if(results!=null&&results.length>1){
                        url=results[1]
                        pid=results[2]
                        break
                    }
                }
                //——————————————————————————————————————————————
                if(results!=null){
                    var HTML_1=el.parentNode.previousSibling.childNodes[1]
                    var HTML_2="no results"
                    //多张图片打开↓↓↓
                    if(HTML_1!=undefined){
                        HTML_2=HTML_1.childNodes[0].childNodes[1].childNodes[0].data
                        if(HTML_2>=15){
                            var HTML_3=15
                            }
                        else{
                            HTML_3=HTML_2
                        }
                        for(var k=1;k<=HTML_3;k++){
                            var url_multiple="https://pixiv.cat/"+pid+"-"+k+".png"
                            window.open(url_multiple)
                            console.log(url_multiple)
                        }
                    }
                    //单张图片打开↓↓↓
                    else{
                        var url_single="https://pixiv.cat/"+pid+".png"
                        window.open(url_single)
                        console.log(url_single)
                    }
                }
                //——————————————————————————————————————————————
                //动态图封面打开↓↓↓
                else{
                    var ans=HTML.split(".jpg")[0]
                    var ans_1=ans.split("/")[ans.split("/").length-1]
                    var pid_2=ans_1.split("_")[0]
                    var url_single_gif="https://pixiv.cat/"+pid_2+".gif"
                    window.open(url_single_gif)
                    console.log(url_single_gif)
                }
                event.preventDefault();
                console.log(HTML_2)
                //——————————————————————————————————————————————
            }
            //ctrl事件结束,alt事件开始
            if(event.altKey){
                HTML=el.outerHTML
                for(var u in match_rules){
                    results=HTML.match(match_rules[u])
                    if(results!=null&&results.length>1){
                        url=results[1]
                        pid=results[2]
                        break
                    }
                    if(results==null){
                        var ans_alt=HTML.split(".jpg")[0]
                        var ans_alt1=ans_alt.split("/")[ans_alt.split("/").length-1]
                        pid=ans_alt1.split("_")[0]
                        console.log("alt事件pid:"+pid)
                    }
                }
                GM_setClipboard(pid);//复制pid至剪切板
                //自动收藏↓↓↓
                var HTML_click_1=el.parentNode.parentNode.parentNode.childNodes[1]
                var HTML_click_2=HTML_click_1.childNodes[0].childNodes[0]
                HTML_click_2.click()
                event.preventDefault();
                console.log("Complete click")
            }
        }
    });

})();