Greasy Fork is available in English.
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, Safarixmlhttp=new XMLHttpRequest();}else{// code for IE6, IE5xmlhttp=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();}