// ==UserScript== // @name pixiv快速打开原图&自动收藏&原图链接打包下载&图片预览 // @description 支持快速打开pixiv图片原图,快速收藏图片,快速获取页面所有预览图对应图片原图链接,储存本次使用时收藏图片的原图链接和获取的页面内浏览图的原图链接,并下载为txt。支持浏览已储存的图片链接,浏览鼠标所选图片大中小图片(储存页面所有浏览图原图链接时有可能会超出cookie的储存范围) // @version 2.3.5 // @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,No4,No5 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:10; 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:10; 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:10; 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:11; 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:10; 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:10; 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:10; font-size:14px} #No3{top:52%;background:#000} #text{ top:0%; background:#fff; color:black; opacity:.0; position:fixed; overflow:auto; z-index:3; left:-350px; width:280px; height:100%; border-radius:0px; transform-origin:-160px 0px; font-size:15px; padding-left:40px; padding-top:58px; line-height:30px; transition: 0.5s }::-webkit-scrollbar { display: none; } #blackcover{ top:0%; background:#000; color:black; opacity:.0; position:fixed; overflow:auto; z-index:1; left:0px; width:100%; height:100%; transform-origin:0px 0px; display:none; transition: 0.5s } #covertitle{ top:0%; background:none; color:black; opacity:.0; position:fixed; overflow:auto; z-index:5; left:-160px; width:150x; height:36px; transform-origin:-160px 0px; padding-top:27px; padding-right:130px; font-size:20px; transition: 0.5s }::-webkit-scrollbar { display: none; } #pagenumber{ top:34.7px; background:none; color:#606060; opacity:.0; position:fixed; z-index:5; left:-200px; width:50x; height:30px; font-weight:551; transform-origin:-160px 0px; font-size:10px; transition: 0.5s }::-webkit-scrollbar { display: none; } #bigeye{ height:37px; width:37px; color:#fff; opacity:.0; left:-154px; padding-top:25px; transition: 0.5s } #bigeye{ position:fixed; z-index:4;} #bigeye{top:0px;background:none} #whitecover{ height:65px; width:320px; box-shadow:0px 0px 60px #fff; opacity:.0; left:-300px; transition: 0.5s } #whitecover{ position:fixed; z-index:3;} #whitecover{top:0px;background:#fff} #pages{ top:32px; height:15px; width:15px; opacity:.0; left:-200px; position:fixed; z-index:5; transition: 0.5s } #No4{ height:16px; width:16px; border-radius:21px; color:#fff; padding:6px; opacity:.0; left:-20px; cursor:pointer; transition: 0.5s } #No4{ position:fixed; z-index:10; font-size:14px} #No4{top:52%;background:#000} #picture{ position:absolute; z-index:1000; transition: 0.2s } #bigImg{ position:absolute; transform-origin:-160px 0px; opacity:1; transition: 1s } #bigImg_1{ position:absolute; transform-origin:-160px 0px; opacity:1; transition: 1s } #No5{ height:16px; width:16px; border-radius:21px; color:#fff; padding:6px; opacity:.0; left:-20px; cursor:pointer; position:fixed; z-index:10; font-size:14px; top:52%; background:#000; transition: 0.5s } `; function pictureSize(element){ var mouseX=event.clientX var mouseY=event.clientY var wide=element.clientWidth var hight=element.clientHeight var pagewide=document.documentElement.clientWidth var pagehight=document.documentElement.clientHeight var w1=wide/pagewide var h1=hight/pagehight if(w1<=h1){ element.style.height=pagehight-mouseY+"px"/*parseInt((1/h1)*hight)-100+"px"*/ //alert(pagehight+";"+hight) } else{ element.style.width=pagewide-mouseX+"px"/*parseInt((1/w1)*wide)-100+"px"*/ } console.log(mouseX+";"+mouseY) //alert(pagewide+";"+pagehight) event.preventDefault() } //————————————————————————————————删除cookie function delCookie(name){ var date = new Date(); date.setTime(date.getTime() - 10000); document.cookie = name + "=a; expires=" + date.toGMTString()+";path=/"; //setCookie(name,"a",date.toGMTString()) } function downloadIamge(imgsrc, name) { let image = new Image(); image.setAttribute("crossOrigin", "anonymous"); image.onload = function() { let canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; let context = canvas.getContext("2d"); context.drawImage(image, 0, 0, image.width, image.height); let url = canvas.toDataURL("image/png"); //得到图片的base64编码数据 let a = document.createElement("a"); // 生成一个a元素 let event = new MouseEvent("click"); // 创建一个单击事件 a.download = name || "photo"; // 设置图片名称 a.href = url; a.dispatchEvent(event); }; image.src = imgsrc; event.preventDefault() } 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{ return event.clientX }) } function mouseY(event){ document.body.addEventListener('mousemove',(event)=>{ return event.clintY }) } window.addEventListener('load', function(){ var cover_1=document.querySelector(".fvHsDQ") var cover_2=document.querySelector(".hYvGvO") var cover_3=document.querySelector(".cSAnog") if(cover_2!=null){ cover_2.remove() cover_1.style.position="unset"; cover_3.style.whiteSpace="unset" var text=cover_3.innerHTML cover_3.innerHTML=""+cover_3.innerHTML+"" } }) 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+";path=/" 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 if(picture_num!="undefined"){ 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_4=getelemt("No4") var elem_5=getelemt("No5") 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_4.style.opacity="0.20" elem_5.style.opacity="0.20" elem_4.style.transform="rotate(-28deg) translateX(80px)" elem_2.style.transform="rotate(3deg) translateX(80px)" elem_3.style.transform="rotate(33deg) translateX(72px)" elem_1.style.transform="rotate(67deg) translateX(65px)" elem_5.style.transform="rotate(-59deg) translateX(80px)" click_num++ } else if(w<0){ elem_1.style.opacity="0" elem_2.style.opacity="0" elem_3.style.opacity="0" elem_4.style.opacity="0" elem_5.style.opacity="0" elem_4.style.transform="rotate(-28deg) translateX(0px)" elem_2.style.transform="rotate(3deg) translateX(0px)" elem_3.style.transform="rotate(32deg) translateX(0px)" elem_1.style.transform="rotate(67deg) translateX(0px)" elem_5.style.transform="rotate(-59deg) translateX(0px)" //elem.style.transform="translateX(0px)" click_num++ } }) var click_num_1=0 var v=1 No3.addEventListener('click',()=>{ v=Math.pow(-1, click_num_1) click_num_1++ var elem_1=document.getElementsByTagName("cookie_text")[0] var elem_2=document.getElementsByTagName("text_background")[0] var elem_3=document.getElementsByTagName("black_cover")[0] var elem_7=document.getElementsByTagName("cover_title")[0] var elem_12=document.getElementsByTagName("page_number")[0] var elem_8=getelemt("bigeye") var elem_10=getelemt("whitecover") var elem_11=getelemt("pages") //——————————————————————————————————————————————————————————可以设为函数 var cookie_split=document.cookie.split(";") var cookie_txt="" var p=0 for(var k=0;k0){ elem_1.style.opacity="1" elem_1.style.transform="translateX(350px)" elem_10.style.opacity="1" elem_10.style.transform="translateX(300px)" //elem_2.style.opacity="0.4" elem_2.style.transform="translateX(160px)" elem_3.style.display="block" setTimeout(function () { elem_3.style.opacity="0.3" }, 0.1); elem_7.style.transform="translateX(234px)" elem_7.style.opacity="1" elem_8.style.transform="translateX(191px)" elem_8.style.opacity="1" elem_11.style.transform="translateX(443px)" elem_11.style.opacity="1" elem_12.style.transform="translateX(462px)" elem_12.style.opacity="1" var elem_4=getelemt("No1") var elem_5=getelemt("No2") var elem_6=getelemt("No3") var elem_13=getelemt("No4") var elem_14=getelemt("No5") var elem=getelemt("morefunction") elem_4.style.opacity="0" elem_5.style.opacity="0" elem_6.style.opacity="0" elem_13.style.opacity="0" elem_14.style.opacity="0" elem_13.style.transform="rotate(-28deg) translateX(0px)" elem_5.style.transform="rotate(3deg) translateX(0px)" elem_6.style.transform="rotate(32deg) translateX(0px)" elem_4.style.transform="rotate(67deg) translateX(0px)" elem_14.style.transform="rotate(-59deg) translateX(0px)" click_num++ } else{ elem_1.style.opacity=".0" elem_1.style.transform="translateX(0px)" elem_1.style.fontSize="15px" elem_10.style.opacity=".0" elem_10.style.transform="translateX(0px)" elem_2.style.opacity=".0" elem_2.style.transform="translateX(0px)" elem_3.style.opacity=".0" setTimeout(function () { elem_3.style.display="none" }, 300); elem_7.style.transform="translateX(0px)" elem_7.style.opacity="0" elem_8.style.transform="translateX(0px)" elem_8.style.opacity="0" elem_11.style.transform="translateX(0px)" elem_11.style.opacity="0" elem_12.style.transform="translateX(0px)" elem_12.style.opacity="0" } }) No4.addEventListener('click',()=>{ retract() }) document.getElementsByTagName("black_cover")[0].addEventListener('click',()=>{ var elem_1=document.getElementsByTagName("cookie_text")[0] var elem_2=document.getElementsByTagName("text_background")[0] var elem_3=document.getElementsByTagName("black_cover")[0] var elem_7=document.getElementsByTagName("cover_title")[0] var elem_8=getelemt("bigeye") var elem_10=getelemt("whitecover") var elem_11=getelemt("pages") var elem_12=document.getElementsByTagName("page_number")[0] elem_1.style.opacity=".0" elem_1.style.transform="translateX(0px)" elem_1.style.fontSize="15px" elem_10.style.opacity=".0" elem_10.style.transform="translateX(0px)" elem_2.style.opacity=".0" elem_2.style.transform="translateX(0px)" elem_3.style.opacity=".0" setTimeout(function () { elem_3.style.display="none" }, 300); elem_7.style.transform="translateX(0px)" elem_7.style.opacity="0" elem_8.style.transform="translateX(0px)" elem_8.style.opacity="0" elem_11.style.transform="translateX(0px)" elem_11.style.opacity="0" elem_12.style.transform="translateX(0px)" elem_12.style.opacity="0" click_num_1++ }) //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 preCheck=getCookie("preImg") var path_color=document.getElementById("path12") var pretext="0" if(preCheck==""||preCheck=="0"){ pretext="1" path_color.style.fill="#0f0" } else if(preCheck=="1"){ pretext="2" path_color.style.fill="#00a4ff" } else if(preCheck=="2"){ pretext="3" path_color.style.fill="#f00" } else if(preCheck=="3"){ pretext="0" path_color.style.fill="#fff" } setCookie("preImg",pretext,-1) }) deleteCookie.addEventListener('click',()=>{ 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)) } setCookie("pixiv_preurl_user",getCookie("user_url"),-1) delCookie("user_url") setCookie("pixiv_preurl",pixiv_preurl,-1) alert("已清除所有pixiv图片链接") alert_count=0 } }) } checkCookie() //———————————————————————————————————————————————————————————— var left_1,top_1 document.body.addEventListener('mouseover',function(event){ var pre_check=getCookie("preImg") if((pre_check=="1"||pre_check=="2"||pre_check=="3")&&event.ctrlKey!=true){ var left_1=event.pageX+"px" var top_1=event.pageY+"px" event.target.addEventListener('mousemove',(event)=>{ left_1=event.pageX+"px" top_1=event.pageY+"px" }) var kid=event.target.innerHTML// if(kid==""){ kid=event.target.parentNode.innerHTML } var father_check=event.target.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode var eventtarget=event.target for(var ab=0;ab<10;ab++){ if(eventtarget.className=="sc-1nhgff6-4 eiyVxR"||eventtarget.className=="sc-9y4be5-1 kAEwxm"||eventtarget.className=="sc-1kr69jw-0 eudeJn"){ var className=true break } else{ eventtarget=eventtarget.parentNode } } //var className=father_check.className if(kid.match("square1200.jpg")!=null&&className!=""||kid.match("custom1200.jpg")!=null&&className!=""){ var url=window.location.href if(className==true){ if(url.match("artwork")!="null"){ if(event.target.childNodes.length!=0){ var innerHTML=event.target.childNodes[0].currentSrc } else{ innerHTML=event.target.currentSrc } if(getCookie("preImg")=="2"){ innerHTML=innerHTML.replace(/square1200/,"master1200") } if(getCookie("preImg")=="3"){ var inside=innerHTML.match(/\d{4}\/\d{2}\/\d{2}\/\d{2}\/\d{2}\/\d{2}\/\d{7,9}_p0/)[0] innerHTML="https://i.pximg.net/img-master/img/"+inside+"_master1200.jpg" } addImg(top_1,left_1,innerHTML) if(getCookie("preImg")=="3"){ pictureSize(document.getElementById("bigImg_1")) } //bigImg.style.transform="scale(1.5)" //GetMouse() console.log(event.target) } } } } }) document.body.addEventListener('mouseover',function(event){ var eventT=event.target for(var aa=0;aa<10;aa++){ if(eventT.className=="iasfms-1 BkIIg"||eventT.className=="iasfms-3 hvltMv"){ var ab=true break } else{ if(eventT==null){ break } eventT=eventT.parentNode ab=false } } if(ab==false){ var search=document.getElementById("bigImg") if(search==null){ search=document.getElementById("bigImg_1") } search.remove() } }) })();