Greasy Fork

Greasy Fork is available in English.

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

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

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

// ==UserScript==
// @name            pixiv快速打开原图&自动收藏
// @description     通过Ctrl+右键快速打开pixiv图片原图(支持打开动态图的封面,但无法打开动态图),同时收藏此图片
// @version         0.5
// @namespace       akari
// @author          Pikaqian
// @include         *://www.pixiv.net/*
// @include         *://www.pixivision.net/*
// @icon            https://static.hdslb.com/images/akari.jpg
// @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")
            }
        }
    });

})();