dev_broken_thumbs

remove broken thumb-code within your custom-boxes on deviantart.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name       dev_broken_thumbs
// @namespace  dev_broken_thumbs
// @version    1.01
// @description  remove broken thumb-code within your custom-boxes on deviantart.
// @include    http://*.deviantart.com/
// @include    http://*.deviantart.com/journal/*
// @author      Dediggefedde
// @grant		GM_setValue
// @grant		GM_getValue
// @grant		GM_deleteValue
// ==/UserScript==

(function(){
var thumblist=new Array();
var corr_list=new Array();
var dellist=new Array();
var storlist=new Array();
var eingabenaktiv;
var aktivbox;
var uberset;
var journal=false;
var temp_thumblist=GM_getValue("thumblist");
var temp_corrlist=GM_getValue("corrlist");

function start(){
	if(document.getElementById("journal-entry-form")!=null){
		if(temp_thumblist!=null)temp_thumblist=JSON.parse(temp_thumblist);
		if(temp_corrlist!=null)temp_corrlist=JSON.parse(temp_corrlist);
		if(temp_thumblist.length==0)return;
		thumblist=temp_thumblist;
		corr_list=temp_corrlist;
		GM_deleteValue("thumblist");
		GM_deleteValue("corrlist");
		journal=true;
		showbox();
	}else if(location.href.indexOf("/journal/")!=-1){ //remove thumbs in journal: addition to script
		journal=true;
		var editbut=document.getElementsByClassName("edit-button");
		if(editbut.length==0)return;
		editbut[0].setAttribute("onclick","return false");
		editbut[0].addEventListener("click",analyse);
	}else{
		var customcont = document.getElementsByClassName("gr-box");
		var customedit;
		for(var i=0;i<customcont.length;i++){
			customedit=customcont[i].parentNode.getElementsByClassName("gmbutton2chaos")[0];
			if(typeof customedit =="undefined"||customedit.getAttribute("dev_broken_thumbs"))continue;
			customedit.setAttribute("dev_broken_thumbs","true");
			customedit.addEventListener("click",analyse);
		}
	}
}
function analyse(){
    var rex=/(:thumb\d+:)|(class="instorage)|(a class="thumb)/g;
	corr_list=new Array();
	
    if(!journal){
		aktivbox=this.parentNode.parentNode.parentNode;
		
		if(aktivbox.getElementsByClassName("grf-mirror").length>0)
			thumblist=aktivbox.getElementsByClassName("grf-mirror")[0].innerHTML.match(rex);
		else if(document.getElementById("aboutme-info") != null)
			thumblist=document.getElementById("aboutme-info").innerHTML.match(rex);
		else
			return;
	}else{
		// if(document.getElementsByClassName("journaltext").length==0){setTimeout(analyse,1000);return;}
		thumblist=document.getElementsByClassName("journaltext")[0].innerHTML.match(rex);
	}
    if(!thumblist)return;
    for(var i=0;i<thumblist.length;i++){
        switch(thumblist[i]){
            case "class=\"instorage":corr_list.push(new Array(i,0));break; 
            case "a class=\"thumb":break; 
            default: corr_list.push(new Array(i,1));break; 
        }
    }
    if(!journal){
		detektbutton();
		eingabenaktiv=setInterval(detektbutton,1000);
	}else{
		// showbox();
		//page change when journal-edit is clicked. solution: temporary store thumblist and corr_list and use showbox on load when there is stored data
		GM_setValue("thumblist",JSON.stringify(thumblist));
		GM_setValue("corrlist",JSON.stringify(corr_list));
		location.href=this.getAttribute("href");
	}
}
function detektbutton(){
    if(document.getElementsByClassName("blockmenu").length==0){clearInterval(eingabenaktiv);return;}
	document.getElementsByClassName("blockmenu")[0].getElementsByClassName("edit_link")[0].addEventListener("click",showbox);  
}
function showbox(){
    if(corr_list.length==0)return;
	if(!journal){
		if(typeof aktivbox.getElementsByTagName("textarea")[0]=="undefined"){setTimeout(showbox,1000);return;}
		uberset=aktivbox.getElementsByTagName("textarea")[0].innerHTML.match(/(:thumb\d+:)|(class="instorage)/g);
	}else{
		if(document.getElementById("journal-entry-form")==null||document.getElementById("journal-entry-form").getElementsByClassName("writer").length==0){setTimeout(showbox,1000);return;}
		uberset=document.getElementById("journal-entry-form").getElementsByClassName("writer")[0].innerHTML.match(/(:thumb\d+:)|(class="instorage)/g);
	}
    dellist=new Array();
    storlist=new Array();    
    for(var i=0;i<corr_list.length;i++){
        if(corr_list[i][1]==0)storlist.push(uberset[corr_list[i][0]]);
        else dellist.push(uberset[corr_list[i][0]]);;
    }
    
    var nbox=document.createElement("div");
    nbox.id="dev_broken_thumb_alert";
    nbox.setAttribute("class","loading modal modal-rounded");
    nbox.setAttribute("style","display:block;z-index:999999;top: 60%; left: 60%; width: 400px; height: 400px; margin-left: -339px; margin-top: -298px; position: fixed; box-shadow: rgba(0, 0, 0, 0.496094) 0px 1px 4px, rgb(255, 255, 255) 0px 1px 1px inset; ");
    nbox.innerHTML="<a href='' onclick='document.body.removeChild(document.getElementById(\"dev_broken_thumb_alert\"));return false;' class='x'></a>"+
        "<div class='fakedeepee-box'>"+
        "<div class='deepee-title'><strong>Corrupted thumbnails detected!</strong></div>"+
        "<span style='font-weight:bold;'><input type='checkbox' checked='checked' name='rem_del_thumb' id='rem_del_thumb'/><label for='rem_del_thumb'>Remove "+dellist.length+" deleted thumbs</label><br/>"+
        "<ul style='height: 100px;overflow-y:scroll;'><li>"+dellist.join("</li><li>")+"</li></ul><br/>"+
        "<span style='font-weight:bold;'><input type='checkbox' checked='checked' name='rem_stor_thumb' id='rem_stor_thumb'/><label for='rem_stor_thumb'>Remove "+storlist.length+" thumbs in storage</label><br/>"+
        "<ul style='height: 100px;overflow-y:scroll;'><li>"+storlist.join("</li><li>")+"</li></ul><br/>"+
        "<div style='margin:0px auto;text-align:center;'>"+
        "<a href='' onclick='return false;' class='gmbutton2 gmbutton2s' style='margin-right:10px;width:100px;display:inline-block' id='dev_broken_thumb_execute'>Remove<b></b></a>"+
        "<a href='' onclick='document.body.removeChild(document.getElementById(\"dev_broken_thumb_alert\"));return false;' class='gmbutton2 gmbutton2c' style='width:100px;display:inline-block' id='dev_broken_thumb_execute'>Cancel<b></b></a>"+
        "</div>"+
        "</div>";
    document.body.appendChild(nbox);
    document.getElementById("dev_broken_thumb_execute").addEventListener("click",remover);
}
function remover(){
    var remstor=(document.getElementById("rem_stor_thumb").checked);
    var remdel=(document.getElementById("rem_del_thumb").checked);
	var tex;
	
	if(!journal)tex=aktivbox.getElementsByTagName("textarea")[0].innerHTML;
	else tex=document.getElementById("journal-entry-form").getElementsByClassName("writer")[0].innerHTML;

	for(var i=corr_list.length-1; i>=0;i--){
		if((corr_list[i][1]==0&&remstor)||(corr_list[i][1]==1&&remdel)){tex=tex.replace(uberset[corr_list[i][0]],"");}
	}
	if(!journal)aktivbox.getElementsByTagName("textarea")[0].innerHTML=tex;
	else document.getElementById("journal-entry-form").getElementsByClassName("writer")[0].innerHTML=tex;

	
    document.body.removeChild(document.getElementById("dev_broken_thumb_alert"));
}

window.onload=start;
// setInterval(start,1000);
})();