// ==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.0.7
// @grant none
// ==/UserScript==
var IfAdd = 1;
var SS = 8;
var S = new Array();
for(var i = 0 ; i < SS ; i++ ){
S[i] = 0;
}
var alwaysPrivate = false;
var iii=1;
var listener = function(e){
e.preventDefault();
e.target.textContent = "Adding...";
// e.target.textContent = e.target.getAttribute("href").split("=")[1];
//var id1 = "bookmark_add.php?type=illust&illust_id="+e.target.getAttribute("href").split("=")[1];
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.textContent = "Complete";
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();
};
/*
var listener2 = function(e){
e.preventDefault();
//e.target.firstChild.textContent = "Adding...";
e.target.innerHTML = "Adding...";
e.target.setAttribute("class","");
// e.target.textContent = e.target.getAttribute("href").split("=")[1];
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", "http://www.pixiv.net/bookmark_add.php", true);
post.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
post.onload = function(){
//e.target.innerHTML = "Complete";
e.target.parentNode.textContent = "Complete";
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();
};
*/
var listener3 = function(e){
e.preventDefault();
e.target.textContent = "Adding...";
// e.target.textContent = e.target.getAttribute("href").split("=")[1];
var id1 = "bookmark_add.php?type=illust&illust_id="+e.target.getAttribute("href").split("id=")[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", "http://www.pixiv.net/bookmark_add.php", true);
post.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
post.onload = function(){
e.target.textContent = "Complete";
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();
};
var CL2 = document.getElementsByClassName("bookmark-count").length;
function GETClass2(){
if ( document.getElementsByClassName("bookmark-count").length != CL2 || S[2] === 0){
CL2 = document.getElementsByClassName("bookmark-count").length;
var CLi = 0;
while(CLi < CL2){
//var a = document.getElementsByClassName("_icon sprites-bookmark-badge")[CLi];
//var b = document.getElementsByClassName("_icon sprites-bookmark-badge")[CLi].parentNode.getAttribute("href");
//a.setAttribute("href",b);
var b = document.getElementsByClassName("bookmark-count")[CLi].getAttribute("href");
if( document.getElementsByClassName("bookmark-count")[CLi].innerHTML == "Add BookMark" )
document.getElementsByClassName("bookmark-count")[CLi].addEventListener("click", listener, false);
//document.getElementsByClassName("bookmark-count")[CLi].firstChild.addEventListener("click", listener2, false);
CLi++;
}
if(S[2] === 0){ S[2]++; }
}
Cli = 0;
}
/*
var CL4 = document.getElementsByClassName("meta-box page-count").length;
function GETClass4(){
if ( document.getElementsByClassName("meta-box page-count").length != CL4 || S[4] === 0){
CL4 = document.getElementsByClassName("meta-box page-count").length;
var CLi = 0;
while(CLi < CL4){
document.getElementsByClassName("meta-box page-count")[CLi].addEventListener("click", listener3, false);
CLi++;
}
if(S[4] === 0){ S[4]++; }
}
Cli = 0;
}
*/
function addElementA(Class,id,MCLi,IfBookMark){
var id3 = "/bookmark_detail.php?illust_id="+id;
var parent = document.getElementsByClassName(Class)[MCLi];
var b = document.createElement("ul");
var a = document.createElement("a");
a.setAttribute("class", "bookmark-count __ui-tooltip");
a.setAttribute("href",id3);
if( IfBookMark === 0 ) a.innerHTML = "Add BookMark";
else{
a.innerHTML = "BookMarking";
a.setAttribute("style","background-color:#9e9a93");
}
if( !parent.getElementsByClassName("bookmark-count __ui-tooltip")[0] ){
parent.appendChild(b);
parent.appendChild(a);
}
/*
var d = document.getElementsByClassName("bookmark-count __ui-tooltip")[MCLi];
var c = document.createElement("li");
c.setAttribute("class","_icon sprites-bookmark-badge");
c.setAttribute("href",id3);
d.appendChild(c);
*/
}
var MCLa = document.getElementsByClassName("image-item").length;
function AddClass(){
var MCLii = 0;
var id2;
/*if( MCLa != document.getElementsByClassName("image-item").length || S[0] ===0 ){*/
MCLa = document.getElementsByClassName("image-item").length;
while( MCLii < MCLa ){
if( document.getElementsByClassName("image-item")[MCLii].getElementsByClassName("bookmark-count __ui-tooltip").length > 0 ){
if( document.getElementsByClassName("image-item")[MCLii].getElementsByClassName("bookmark-count __ui-tooltip").length > 1 ){
var IfD = document.getElementsByClassName("image-item")[MCLii].getElementsByClassName("bookmark-count __ui-tooltip").length;
var MCLii2 = 1;
while( MCLii2 < IfD ){
var IfD2 = document.getElementsByClassName("image-item")[MCLii].getElementsByClassName("bookmark-count __ui-tooltip")[MCLii2];
IfD2.parentNode.removeChild(IfD2);
MCLii2++;
}
}
}
else{
id2 = document.getElementsByClassName("image-item")[MCLii].firstChild.getAttribute("href");
id2 = id2.split("=")[2];
var id3 = "/member_illust.php?mode=medium&illust_id=" + id2;
CheckBookMark("image-item",id2,MCLii);
}
MCLii++;
}
/*}*/
if(S[0] === 0){ S[0]++; }
}
var MCLa2 = document.getElementsByClassName("ranking-item").length - 1 ;
function AddClass2(){
var MCLii = 0;
var id2;
if( MCLa2 != document.getElementsByClassName("ranking-item").length - 1 || S[1] ===0 ){
MCLa2 = document.getElementsByClassName("ranking-item").length - 1;
while( MCLii < MCLa2 ){
if( document.getElementsByClassName("bookmark-count __ui-tooltip")[MCLii] )
{
}
else{
id2 = document.getElementsByClassName("ranking-item")[MCLii].getElementsByClassName("ranking-image-item")[0].getAttribute("id");
id2 = id2.split("i")[1];
//var id3 = "/member_illust.php?mode=medium&illust_id="+id2;
CheckBookMark("ranking-item",id2,MCLii);
//addElementA("ranking-item",id2,MCLii);
}
MCLii++;
}
}
if(S[1] === 0){ S[1]++; }
}
function CheckBookMark(Class,id,MCLi)
{
var xmlhttp;
var x;
var idUrl = "/member_illust.php?mode=medium&illust_id=" + id;
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 ) addElementA(Class,id,MCLi,0);
else addElementA(Class,id,MCLi,1);
}
};
xmlhttp.open("GET",idUrl,true);
xmlhttp.send();
}
function CheckChange(){
if( IfAdd == 1 ) {
if( MCLa == document.getElementsByClassName("image-item").length ){
IfAdd = IfAdd++;
AddClass();
}
else{
MCLa = document.getElementsByClassName("image-item").length;
IfAdd = IfAdd++;
}
}
else {
MCLa = document.getElementsByClassName("image-item").length;
IfAdd = 1;
}
}
//if(window.location.pathname == "member_illust.php")
//var t5 = window.setInterval(AddClass,1000);
var t5 = window.setInterval(CheckChange,1000);
var t6 = window.setInterval(AddClass2,1000);
var t1 = window.setInterval(GETClass2,1000);
//var t4 = window.setInterval(GETClass4,1000);