// ==UserScript== // @name dA_clear_watchlist // @namespace dA_clear_watchlist // @include http://*.deviantart.com/modals/watchers/* // @include https://www.deviantart.com/settings/general* // @require http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js // @version 1 // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_xmlhttpRequest // @description experimental userscript: checks user that watch you how long they have been inactive. was dismissed in this state. originally planned: temp. block users that were offline too long so they "unwatch" you. // @downloadURL https://update.greasyfork.icu/scripts/5807/dA_clear_watchlist.user.js // @updateURL https://update.greasyfork.icu/scripts/5807/dA_clear_watchlist.meta.js // ==/UserScript== var helpicon="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QADgCSAK6JiudvAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUMFBk32NCSIgAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAACWUlEQVQ4y52T30tTYRjHP0e2CxsrWDXr5M7KmSg5sxgDCwLNRR3wRq%2B92H3Xg%2F6CoH%2FCC6%2B1dHAoNnYhRSVLwR85Vmaeo9OlIbkEkWBd5Pv6nrUR9sCB877P83x4vt%2F3fTWU8CeMqrquZGztNHkAj1qcHBmVCaewRpbXVdGk5vfK3%2Fm5t%2B%2FKi3AVzy7kKe9%2B42ZnFG3%2FF%2BWvWywerAIgYG8%2BvKOw%2FJEH8X6ZV6FNApbOWcR7YgwNmBh6iMKXIgBRX0TCnmem8Xo9tJwPApBfmiPqi7isaBI%2FQwMmAOmcBUBnWwcrqwUpZeLVC4KBIM7WhtyLdd9W1d53Ae2SA8DgnX4AXs5k6Yp0yuorQZ3Do0OutV498Xl7o%2FZMToCGHiKds1gsLgPw8N6gq6G0s4UevEy7EeFurA%2BA0KXWxsB0zmJowCTeEwPg7fysq%2BFHZZ%2BwbnDW7wegvLtDfmmuMVB4aJcc0jmLvltxl4fJkVHONDez%2FGkFgJYLF2s9dANnF%2FJSuoCrHgKMTYxz43oXM%2B%2FbmCv2snn0iIYXW0gVd7FX78LZ3pCy7ZJDwPuYqWk4GDYlYHMSAl6okHID7ZKDoYck2CmsuTycz3dLUDLRfjI1f%2FbCkF23UppHPeWxiXHX%2BFFf5C9JyUQ7Y5nPDdce1R%2F1LYu9qC%2FC1PQ5OZ3arMbBsEkYqpp4NpWM%2FaReoT9hPA14H7t8azSdb9LCc%2FywO4BQPWAlYw8GTLL%2FgtVKLh5%2FdWPdSmlhqNabUp1u3UppTfxnNPJSOw0kbD6rigMQkn2TllRxamAtWAWJ%2BA2r3AJr3QFa6gAAAABJRU5ErkJggg%3D%3D"; //start: insertElems() -> scan() -> sorting() -> display() var act = []; //list of users [0] and text of last visit [1] var actO=[],actI=[]; //online/invisible , user-index [0] and a 0 [1] var actM=[],actH=[],actD=[],actW=[]; //Minute, Hour, Day, Week, user-index [0] and number of M/H/D/W [1] function scan(offset,end){ var zwiact=[]; $('a.u').slice(offset, end).each(function () { var usn = $(this).html(); data=GM_xmlhttpRequest({ method: "GET", url:$(this).attr("href"), // synchronous: true onload:function(data){ zwiact.push([usn, $(data.responseText).find('#super-secret-activity div.pbox strong').html()]); $("#dAcw_progress").html(zwiact.length +"/"+(parseInt(end)-parseInt(offset))); if(zwiact.length==end-offset)sorting(parseInt(act.length),zwiact); }, onerror:function(data){ var msg = "An error occurred." + "\nresponseText: " + res.responseText + "\nreadyState: " + res.readyState + "\nresponseHeaders: " + res.responseHeaders + "\nstatus: " + res.status + "\nstatusText: " + res.statusText + "\nfinalUrl: " + res.finalUrl; alert(msg); } }).responseText; // act.push([usn, $(data).find('#super-secret-activity div.pbox strong').html()]); }); } function sorting(offset,zwiact){ $("#dAcw_overlay").remove(); for(var i=0;ib[1]; } console.log(act); actO=$(actO).each(function(){act[$(this)[0]][1]="Online";}); actI=$(actI).each(function(){console.log($(this)[0]);act[$(this)[0]][1]="Invisible";}); actM=actM.sort(arrsort); actH=actH.sort(arrsort); actD=actD.sort(arrsort); actW=actW.sort(arrsort); display(); } function parseact(gact, appd){ $(gact).each(function(){ appd.append(""+act[$(this)[0]][0]+""+act[$(this)[0]][1]+""); // console.log($(this),$(this)[0]); }); } function display(){ $("#dAcw_table tbody tr").slice(1).remove(); var apdiv=$("#dAcw_table tbody"); parseact(actI,apdiv); //invisible parseact(actO,apdiv); //online parseact(actM,apdiv); parseact(actH,apdiv); parseact(actD,apdiv); parseact(actW,apdiv); $("#dAcw_remove.disabled").removeClass("disabled"); $("#dAcw_min").val(parseInt($("#dAcw_min").val())+10); $("#dAcw_max").val(parseInt($("#dAcw_max").val())+10); } function startScan(){ act=[];actO=[];actI=[];actM=[];actH=[];actD=[];actW=[]; var cont=$("
"); cont.html("
x
Progress
0/"+(parseInt($("#dAcw_max").val())-parseInt($("#dAcw_min").val()))+"
"); $("body").append(cont); $("#dAcw_closeP").click(function(){$("#dAcw_overlay").remove();}); scan($("#dAcw_min").val(),$("#dAcw_max").val()); } function showHelp(){ var cont=$("
"); cont.html("
x
Press 'Scan Range!' to check people on this page for their last activity on dA. Which people are checked is specified via 'from' and 'to'. From 0 to 10 will check the first 10 People listed on this page.
If you want to force someone listed to 'unwatch' you, check his row and press 'Remove checked!'. This will block this person for a short time and then unblock him again. The person then will no longer watch you. You won't be able to block him again within 2 days.
Try not to scan more than 20 People at a time, otherwise you might get identified as bot and be unable to access dA for a 1-2 Minutes.
"); $("body").append(cont); $("#dAcw_closeP").click(function(){$("#dAcw_overlayH").remove();}); } function insertMenu(){ // button and menu var men=$("
"); men.html(""+ "
dA_Clear_Watchlist
"+ "xmanual"+ "
from: to:
"+ "
Scan Range!
"+ "
namelast visit
"+ "
Remove checked!
"+ ""); $("body").append(men); $("#dAcw_start").click(startScan); $("#dAcw_remove").click(injectblockpage); $("#dAcw_help").click(showHelp); $("#dAcw_close").click(function(){$("#dAcw_menu").remove();}); $("#dAcw_min").change(function(){if(parseInt($(this).val())>=parseInt($("#dAcw_max").val()))$("#dAcw_max").val(parseInt($(this).val())+1);}); $("#dAcw_max").change(function(){if(parseInt($(this).val())<=parseInt($("#dAcw_min").val()))$("#dAcw_min").val(parseInt($(this).val())-1);}); var sty=$("