HWM_Mail_Helper

Почтовый помощник ГВД

目前为 2019-10-08 提交的版本。查看 最新版本

// ==UserScript==
// @name         HWM_Mail_Helper
// @namespace    Zeleax
// @version      0.2
// @description  Почтовый помощник ГВД
// @author       Zeleax
// @match        https://www.heroeswm.ru/sms_clans.php*
// @grant        GM_deleteValue
// @grant        GM_getValue
// @grant        GM_setValue
// ==/UserScript==

// GM functions
if (typeof GM_getValue != 'function') {this.GM_getValue=function (key,def) {return localStorage[key] || def;};this.GM_setValue=function (key,value) {return localStorage[key]=value;};	this.GM_deleteValue=function (key) {return delete localStorage[key];};}

// Текущая рассылка
var el, curClanTd;
curClanTd=getClosestParentByTagName(getE('//*[contains(text(),"Рассылка клана")]'),'td');
var curClanNum=/#(\d+)/.exec(curClanTd.innerText)[1];

// Сохраненные данные
var clanMailInfoOldS = GM_getValue('HWM_Mail_Manager_clanMailInfoS');
var clanMailInfoOld= clanMailInfoOldS ? JSON.parse(clanMailInfoOldS) : {};

// Текущие данные
var clanList = getE('/html/body/center/table[2]/tbody/tr/td/table/tbody/tr/td[1]/table/tbody');
var clanrows = getL('.//tr',clanList);

var regex=/(\d+).+\D(\d+)/;
var clanMailInfoNew={};
var clanMailDelta={};

for(var i=0; el=clanrows.snapshotItem(i); i++)
{
    var res=regex.exec(el.innerText);
    var old=clanMailInfoOld[res[1]];
    var cntcur=parseInt(res[2],10);
    clanMailInfoNew[res[1]]={cnt: cntcur, chk: (old ? old.chk : 1)};

    clanMailDelta[res[1]]=cntcur-(old ? old.cnt : 0);
    if(clanMailDelta[res[1]]<0) clanMailDelta[res[1]]=0;
    if(clanMailDelta[res[1]]>0)
    {
        if (curClanNum!=res[1]) el.style.backgroundColor = "yellow";
        else curClanTd.style.backgroundColor = "yellow";
    }
}

if(isEmpty(clanMailInfoOld)) clanMailInfoOld = JSON.parse(JSON.stringify(clanMailInfoNew)); // клонирование массива

if(window.location.search=='' && clanMailDelta[curClanNum]==0)
{
    const keys = Object.keys(clanMailDelta)
    for (const key of keys) {
        if(clanMailDelta[key]>0 && clanMailInfoOld[key] && clanMailInfoOld[key].chk==1) {
            window.location +='?clan_id='+key;
        }
    }
}

// Обновляем данные текущей рассылки
clanMailInfoOld[curClanNum].cnt= clanMailInfoNew[curClanNum].cnt;
el=document.getElementsByName('sign')[0];
if (el) clanMailInfoOld[curClanNum].chk = el.checked ? 1 : 0;

// Сохраняем актуальную инфу
var clanMailInfoOldS2=JSON.stringify(clanMailInfoOld);
if(clanMailInfoOldS2!=clanMailInfoOldS)
{
    GM_setValue('HWM_Mail_Manager_clanMailInfoS', clanMailInfoOldS2);
}

function isEmpty(obj) {for (var x in obj) { return false;}return true;}
function getE(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}
function getL(xpath,el,docObj){return (docObj?docObj:document).evaluate(xpath,(el?el:(docObj?docObj.body:document.body)),null,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);}
function getClosestParentByTagName(el, tag){var p, e, fnd=false, tf=tag.toLowerCase();e=el;do{p=e.parentElement;if((p) && (p.tagName.toLowerCase()==tf)){fnd=true;break;} e=p;} while (e);
return fnd?p:null;}

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址