// ==UserScript== // @name pixiv快速打开原图&自动收藏&原图链接打包下载 // @description 支持快速打开pixiv图片原图,快速收藏图片,快速获取页面所有预览图对应图片原图链接,储存本次使用时收藏图片的原图链接和获取的页面内浏览图的原图链接,并下载为txt。 // @version 1.2 // @namespace akari // @author Pikaqian // @include *://www.pixiv.net/* // @include *://www.pixivision.net/* // @icon https://static.hdslb.com/images/akari.jpg // @grant GM_setClipboard // @downloadURL none // ==/UserScript== (function() { 'use strict'; var match_rules=[ /([_=:;&\-\/\.\?\d\w]+?illust_id=(\d+)(?:&|$|))/, /(http(?:s|):\/\/[_\-\/\.\d\w]+?\/(\d{4,})_p\d{1,4}[_\-\/\.\d\w]*)/ ]; let styleE = document.createElement('style'),rightButton,centerWrap,number=1,elem,deleteCookie,deleteAll,alert_count=0,morefunction,No1,No2,No3 document.body.appendChild(styleE); styleE.textContent=` #rightButton{ height:21px; width:21px; border-bottom-right-radius:21px; border-top-right-radius:21px; color:#fff; padding:6px; opacity:.20; left:-20px; cursor:pointer; transform-origin:0px 17px; transition: 0.2s } #rightButton{ position:fixed; z-index:1; font-size:14px} #rightButton{top:38%;background:#000} #deleteCookie{ height:21px; width:21px; border-bottom-right-radius:21px; border-top-right-radius:21px; color:#fff; padding:6px; opacity:.20; left:-20px; cursor:pointer } #deleteCookie{ position:fixed; z-index:1; font-size:14px; transform-origin:0px 17px; transition: 0.2s} #deleteCookie{top:45%;background:#000} #deleteAll{ height:21px; width:21px; border-bottom-right-radius:21px; border-top-right-radius:21px; color:#fff; padding:6px; opacity:.20; left:-20px; cursor:pointer; transform-origin:0px 17px; transition: 0.2s } #deleteAll{ position:fixed; z-index:1; font-size:14px} #deleteAll{top:57%;background:#f00} #morefunction{ height:21px; width:21px; border-bottom-right-radius:21px; border-top-right-radius:21px; color:#fff; padding:6px; opacity:.20; left:-20px; cursor:pointer; transform-origin:0px 17px; transition: 0.2s } #morefunction{ position:fixed; z-index:10; font-size:14px} #morefunction{top:52%;background:#000} #No1{ height:16px; width:16px; border-radius:21px; color:#fff; padding:6px; opacity:.0; left:-20px; cursor:pointer; transition:0.5s } #No1{ position:fixed; z-index:1; font-size:14px} #No1{top:52%;background:#f00} #No2{ height:16px; width:16px; border-radius:21px; color:#fff; padding:6px; opacity:.0; left:-20px; cursor:pointer; transition: 0.5s } #No2{ position:fixed; z-index:2; font-size:14px} #No2{top:52%;background:#000} #No3{ height:16px; width:16px; border-radius:21px; color:#fff; padding:6px; opacity:.0; left:-20px; cursor:pointer; transition: 0.5s } #No3{ position:fixed; z-index:3; font-size:14px} #No3{top:52%;background:#000} `; function download(filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } function lastcookie(){ var matchrule=/pixivid/ var cookie_separate=document.cookie.split(";") for(var r=0;r" } }) window.addEventListener('contextmenu',function (event){ //———————————————————————————————— //———————————————————————————————— var el=event.target if(el!=null){ var url,pid,HTML,results if(event.ctrlKey==true&&event.altKey!=true){ 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==true&&event.ctrlKey!=true){ 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") } } }); //———————————————————————————————————————————————————————————— var num=0 //————————————————————————————————创建cookie function setCookie(cname,cvalue,exdays){ var cookie_all=cname for(var i=0;i<20;i++){ cookie_all=cookie_all+"1" } exdays=-1 cookie_all=cname+"="+cvalue+"; "+exdays var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cookie_all; num=num+1 } //————————————————————————————————调取cookie function getCookie(cname){ var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i1){ var url_result=result[1] var pid=result[2] break } } /////////////////////////////////////////////////////// var picture_num=el.parentNode.previousSibling.childNodes[1] var picture_num_1="no results" /* var HTML_url=window.location.href var HTML_url_pid=HTML_url.split("/")[HTML_url.split("/").length-1] */ if(picture_num!=undefined){ picture_num_1=picture_num.childNodes[0].childNodes[1].innerHTML } if(event.altKey==true&&event.ctrlKey!=true){ var url_cat="https://pixiv.cat/" var url=url_cat if(picture_num_1!="no results"){ for(var u=0;u{ elem=getelemt("rightButton") elem.style.transform="translateX(20px)" }) rightButton.addEventListener('mouseleave',()=>{ elem=getelemt("rightButton") elem.style.transform="translateX(0px)" }) deleteCookie.addEventListener('mouseenter',()=>{ elem=getelemt("deleteCookie") elem.style.transform="translateX(20px)" }) deleteCookie.addEventListener('mouseleave',()=>{ elem=getelemt("deleteCookie") elem.style.transform="translateX(0px)" }) /* deleteAll.addEventListener('mouseenter',()=>{ elem=getelemt("deleteAll") elem.style.transform="translateX(20px)" }) deleteAll.addEventListener('mouseleave',()=>{ elem=getelemt("deleteAll") elem.style.transform="translateX(0px)" }) */ /* morefunction.addEventListener('mouseenter',()=>{ elem=getelemt("morefunction") elem.style.transform="translateX(20px)" }) */ //—————————————————————————————————————————————————————— morefunction.addEventListener('mouseenter',()=>{ var elem=getelemt("morefunction") elem.style.transform="translateX(20px)" }) morefunction.addEventListener('mouseleave',()=>{ var elem=getelemt("morefunction") elem.style.transform="translateX(0px)" }) No2.addEventListener('click',()=>{ //———————————————————————————————————————————————————————————————————————————————————————— user_savepicture() }) var click_num=0 var w=1 morefunction.addEventListener('click',()=>{ w=Math.pow(-1, click_num) var elem_1=getelemt("No1") var elem_2=getelemt("No2") var elem_3=getelemt("No3") var elem=getelemt("morefunction") elem.style.transform="translateX(20px)" if(w>0){ elem_1.style.opacity="0.25" elem_2.style.opacity="0.20" elem_3.style.opacity="0.20" elem_1.style.transform="rotate(0deg) translateX(71px)" elem_2.style.transform="rotate(28deg) translateX(61px)" elem_3.style.transform="rotate(61deg) translateX(60px)" click_num++ } else if(w<0){ elem_1.style.opacity="0" elem_2.style.opacity="0" elem_3.style.opacity="0" elem_1.style.transform="rotate(-1deg) translateX(0px)" elem_2.style.transform="rotate(28deg) translateX(0px)" elem_3.style.transform="rotate(60deg) translateX(0px)" elem.style.transform="translateX(0px)" click_num++ } }) //if(w>0){ //} //—————————————————————————————————————————————————————— /* morefunction.addEventListener('click',()=>{ elem=getelemt("morefunction") elem.style.transform="translateX(0px)" }) */ rightButton.addEventListener('click',()=>{ var cookie_split=document.cookie.split(";") var cookie_txt var p=0 //————————————————————————————————从cookie中匹配pixivid相关cookie for(var k=0;k{ var pid_num=lastcookie() delCookie("pixivid"+(pid_num-1)) }) No1.addEventListener('click',()=>{ var pid_num=lastcookie() if(alert_count==0){ alert("是否要清除所有已储存的pixiv图片链接?\n关闭此提示后再次点击清楚按钮即可清除。") alert_count=1 } else if(alert_count==1){ for(var v=pid_num-1;v>=0;v--){ var pixiv_preurl if(pixiv_preurl==null){ pixiv_preurl=getCookie("pixivid"+v)+"," } else{ pixiv_preurl=pixiv_preurl+getCookie("pixivid"+v)+"," } delCookie("pixivid"+(v)) } delCookie("user_url") setCookie("pixiv_preurl",pixiv_preurl,-1) alert("已清除所有pixiv图片链接") alert_count=0 } }) } checkCookie() //———————————————————————————————————————————————————————————— })();