您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Add a button under the image to OneClick Bookmark.
// ==UserScript== // @name Pixiv One-Click Bookmark // @namespace https://gist.github.com/E-Badapple // @description Add a button under the image to OneClick Bookmark. // @match www.pixiv.net/search.php* // @match www.pixiv.net/bookmark.php* // @match www.pixiv.net/member_illust.php?id=* // @match www.pixiv.net/ranking.php* // @match www.pixiv.net/*bookmark_new_illust.php* // @version 1.1.2 // @grant none // ==/UserScript== function setListener(){ var url = window.location.href; if( ( url.indexOf('bookmark.php\?')>-1 || url.indexOf('member_illust.php')>-1 || url.indexOf('bookmark_new_illust.php')>-1 ) && url.indexOf('bookmark.php\?rest=hide') < 0 ){ GetallImage(); var observer = new MutationObserver(function(mutations){ for (var i = 0; i < mutations.length; ++i) { for (var j = 0; j < mutations[i].addedNodes.length; ++j) { if( mutations[i].addedNodes[j].getAttribute('class').indexOf('image-item') > -1 && mutations[i].addedNodes[j].getAttribute('class').indexOf('_image-items') < 0 ){ GetimageLink( mutations[i].addedNodes[j] ); } else{ if( mutations[i].addedNodes[j].getAttribute('class').indexOf('_image-items') > -1 ){ for( var k=0; k < mutations[i].addedNodes[j].getElementsByClassName('image-item').length; k++ ){ GetimageLink( mutations[i].addedNodes[j].getElementsByClassName('image-item')[k] ); } } } } } }); var imageItems = document.querySelector('._image-items').parentNode; } else if( url.indexOf('ranking.php')>-1 ){ GetallRank(); var observer = new MutationObserver(function(mutations){ for (var i = 0; i < mutations.length; ++i) { for (var j = 0; j < mutations[i].addedNodes.length; ++j) { if( mutations[i].addedNodes[j].getAttribute('class').indexOf('ranking-item') > -1 && mutations[i].addedNodes[j].getAttribute('class').indexOf('ranking-items') < 0 ){ GetrankLink( mutations[i].addedNodes[j] ); } } } }); var imageItems = document.querySelector('.ranking-item').parentNode; } else if( ( url.indexOf('bookmark.php')>-1 && url.indexOf('bookmark.php\?') < 0 ) || url.indexOf('bookmark.php\?rest=hide' > -1 ) ){ GetallRecommend(); var observer = new MutationObserver(function(mutations){ for (var i = 0; i < mutations.length; ++i) { for (var j = 0; j < mutations[i].addedNodes.length; ++j) { if( mutations[i].addedNodes[j].getAttribute('class').indexOf('image-item') > -1 && mutations[i].addedNodes[j].getAttribute('class').indexOf('_image-items') < 0 ){ GetimageLink( mutations[i].addedNodes[j] ); } } } }); var imageItems = document.querySelector('section._unit'); } else if( url.indexOf('search.php')>-1 ){ window.setTimeout(GetallSearchImage,1000); } var options={ 'childList' : true, 'subtree' : true }; observer.observe(imageItems,options); } function setSearchListrner() { var observer = new MutationObserver(function(mutations){ for (var i = 0; i < mutations.length; ++i) { for (var j = 0; j < mutations[i].addedNodes.length; ++j) { if( mutations[i].addedNodes[j].getAttribute('class').indexOf('_7IVJuWZ') > -1 ){ GetsearchLink( mutations[i].addedNodes[j].firstChild ); } } } }); var imageItems = document.querySelector('.layout-body'); var options={ 'childList' : true, 'subtree' : true }; observer.observe(imageItems,options); } var alwaysPrivate = false; var iii=1; var listener = function(e){ e.preventDefault(); e.target.textContent = "Adding..."; var id1 = "bookmark_add.php?type=illust&illust_id="+e.target.getAttribute("href").split("=")[1]; var get = new XMLHttpRequest(); get.open("GET", id1, true); get.onload = function(){ var id = get.responseText.match(/<input type="hidden" name="id" value="(.*?)">/)[1]; var tt = get.responseText.match(/<input type="hidden" name="tt" value="(.*?)">/)[1]; var tagData = get.responseText.match(/<span class="tag c6.*?" data-tag=".*?">/g); var tags = (tagData !== null) ? tagData.map(function(x){return x.match(/data-tag="(.*?)">/)[1];}) : []; var restrict = (alwaysPrivate || (tags.indexOf("R-18") !== -1)) ? "1" : "0"; var post = new XMLHttpRequest(); post.open("POST", "https://www.pixiv.net/bookmark_add.php", true); post.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); post.onload = function(){ e.target.style = "background-color:#9e9a93"; e.target.innerHTML = "BookMarking"; e.target.removeEventListener("click", listener, false); }; post.send("type=illust&id=" + id + "&tt=" + tt + "&restrict=" + restrict + "&comment=&mode=add&from_sid=&submit=&tag=" + tags.join(" ")); }; get.send(); }; function GetallImage(){ var url; var id; var imageItem = document.getElementsByClassName("image-item"); for( var i=0; i<imageItem.length; i++){ try{ if( !imageItem[i].getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ id = imageItem[i].firstChild.getAttribute("href"); id = id.split('=')[2]; url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem[i], url, id ); } }catch(e){} } } function GetallSearchImage(){ var url; var id; var imageItem = document.getElementsByClassName("gmzooM4"); for( var i=0; i<imageItem.length; i++){ try{ if( !imageItem[i].getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ id = imageItem[i].firstChild.firstChild.getAttribute("href"); id = id.split('=')[2]; url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem[i], url, id ); } }catch(e){} } } function GetallRank(){ var imageItem = document.getElementsByClassName("ranking-item"); var id; var url; for( var i=0; i<imageItem.length; i++){ try{ if( !imageItem[i].getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ id = imageItem[i].getElementsByClassName("ranking-image-item")[0].getAttribute("id"); id = id.split("i")[1]; url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem[i], url, id ); } }catch(e){} } } function GetallRecommend(){ var imageItem = document.getElementById("illust-recommend").getElementsByClassName('image-item'); var id; var url; for( var i=0; i<imageItem.length; i++){ try{ if( !imageItem[i].getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ id = imageItem[i].firstChild.getAttribute("href"); id = id.split('=')[2]; url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem[i], url, id ); } }catch(e){} } } function GetimageLink( imageItem ){ try{ if( !imageItem.getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ var id = imageItem.firstChild.getAttribute("href"); id = id.split('=')[2]; var url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem, url, id ); } }catch(e){} } function GetsearchLink( imageItem ){ try{ if( !imageItem.getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ var id = imageItem.firstChild.firstChild.getAttribute("href"); id = id.split('=')[2]; var url = "/member_illust.php?mode=medium&illust_id=" + id; CheckBookmark( imageItem, url, id ); } }catch(e){} } function GetrankLink( imageItem ){ try{ if( !imageItem.getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ var id = imageItem.getElementsByClassName("ranking-image-item")[0].getAttribute("id"); id = id.split('i')[1]; var url = "/member_illust.php?mode=medium&illust_id=" + id;; CheckBookmark( imageItem, url, id ); } }catch(e){} } function CheckBookmark( imageItem, url, id ){ var xmlhttp; var x; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { x=xmlhttp.responseText; if( x.indexOf("add-bookmark") > -1 ) addButton(id, imageItem, 0); else addButton(id, imageItem, 1); } }; xmlhttp.open("GET",url,true); xmlhttp.send(); } function addButton(id, imageItem, IfBookMark){ var url = "/bookmark_detail.php?illust_id="+id; var ul = document.createElement("ul"); var a = document.createElement("a"); a.setAttribute("class", "bookmark-count __ui-tooltip"); a.setAttribute("href",url); if( IfBookMark === 0 ) { a.innerHTML = "Add BookMark"; a.addEventListener("click",listener,false); } else{ a.innerHTML = "BookMarking"; a.setAttribute("style","background-color:#9e9a93"); } if( !imageItem.getElementsByClassName("bookmark-count __ui-tooltip")[0] ){ imageItem.appendChild(ul); imageItem.appendChild(a); } } if( window.location.href.indexOf('search.php')>-1 ){ window.setTimeout(GetallSearchImage,500); window.setTimeout(setSearchListrner,1000); } else{ setListener(); }