ICV Highlighter

highlights new posts of the day in www.icv-crew.com pages

ของเมื่อวันที่ 07-10-2022 ดู เวอร์ชันล่าสุด

// ==UserScript==
// @name        ICV Highlighter
// @description highlights new posts of the day in www.icv-crew.com pages
// @author      SH3LL
// @version     1.5
// @match       https://www.icv-crew.com/forum/index.php?*
// @grant       none
// @run-at      document-idle
// @copyright	GPL3
// @grant       GM_xmlhttpRequest
// @namespace https://greasyforks.org/users/762057
// ==/UserScript==

let months = {
     '01':'Gennaio', '02':'Febbraio', '03':'Marzo', '04':'Aprile', '05':'Maggio', '06':'Giugno', '07':'Luglio', '08':'Agosto', '09':'Settembre', '10':'Ottobre', '11':'Novembre', '12':'Dicembre'
};

function get_thread_page(post_link){
   return new Promise(function (resolve, reject) {
         GM_xmlhttpRequest({
            method: 'GET',
            responseType: 'document',
            synchronous: false,
            url: post_link,
            onload: (req) => {
                dump(req.responseText);
                resolve(req.responseText);
            }
            });
   });
}

function get_data_ieri(){
   return new Promise(function (resolve, reject) {

            let ieri = new Date();
            ieri.setDate(ieri.getDate() - 1);
            let mese= months[String(ieri.getMonth() + 1).padStart(2, '0')];
            let dd = String(ieri.getDate()).padStart(2, '0');
            let yyyy = ieri.getFullYear();
            ieri = dd + ' ' + mese + ' ' + yyyy;
            resolve(ieri);
        });
}

async function main(){
    //setto la data di ieri
    let ieri = await get_data_ieri();

    //--------------rendo grigi tutti i post PINNATI------
    let links1 = document.getElementsByClassName("subject stickybg locked_sticky2");
    for (let mylink1 of links1){
      mylink1.children[0].children[0].children[0].children[0].style.color = 'gray';
      mylink1.children[0].removeChild(mylink1.children[0].children[1]);
    }
    // remove descriptions
    let descriptions = document.getElementsByTagName("small");
    for(let description of descriptions){
      if(description.id.includes("topicdesc")) description.remove();
    }
    // remove bars
    $('.topicdesc').remove();
    //sposto autori sotto
    let autori = document.getElementsByTagName("p");
    for(autore of autori){
      if(autore.innerText.includes("Aperto")) autore.style.paddingTop = "10px";
    }

    //--------------rendo grigi e BARRATI i post MOVED--------------
    let links2= document.getElementsByClassName("subject lockedbg2");
    for(mylink2 of links2){
      mylink2.children[0].children[0].children[0].style.color = 'gray';

      //creazione elemento SBARRATO
      let striked_word = document.createElement('strike');
      striked_word.innerText= mylink2.children[0].children[0].children[0].innerText;
      mylink2.children[0].children[0].children[0].innerText="";
      mylink2.children[0].children[0].children[0].appendChild(striked_word);

      mylink2.children[0].removeChild(mylink2.children[0].children[1]);
    }

    //--------------coloro di grigio tutti i post RELEASES--------------
    let links3 = document.getElementsByClassName("subject windowbg2");
    for (mylink3 of links3){
      mylink3.children[0].children[0].children[0].style.color = 'gray';
      // dove non c'è "NUOVO" non cancello niente, se no il nome del releaser finirebbe cancellato
      if (!mylink3.children[0].children[1].innerText.includes("Aperto da")) mylink3.children[0].removeChild(mylink3.children[0].children[1]);
    }

    //--------------coloro arancione i post odierni--------------
    let posts = document.getElementsByClassName("subject windowbg2");
    for (el of posts){
      let original_text=el.children[0].children[0].children[0].innerText;
      let post_link= el.children[0].children[0].children[0].href;
      let codec_icon=el.previousElementSibling;

      //--------------APPENDO LABEL "PARSING"--------------
      let parsing_label=document.createElement("small");
      parsing_label.style.color="orange";
      parsing_label.innerText="<-- Parsing"
      el.children[0].children[1].append(parsing_label);

      //--------------CONTROLLI SU OGNI POST PER VEDERE SE E' NECESSARIO SCARICARE LA PAGINA--------------
      let data_e_releaser_name=el.parentElement.lastElementChild.innerText;
      let n_risposte_e_n_visite=el.nextElementSibling.innerText;

      if(data_e_releaser_name.includes("Oggi") && n_risposte_e_n_visite.includes("0 Risposte")){ // >>>>>> se c'è scritto OGGI e ha 0 RISPOSTE: coloro subito di arancione
        el.children[0].children[0].children[0].style.color = 'orange';
        el.children[0].children[1].removeChild(el.children[0].children[1].lastElementChild);
        continue;

      }else if(data_e_releaser_name.includes(ieri) && n_risposte_e_n_visite.includes("0 Risposte")){ // >>>>>> se c'è scritto IERI e ha 0 RISPOSTE: coloro subito di marrone
        el.children[0].children[0].children[0].style.color = 'saddlebrown';
        el.children[0].children[1].removeChild(el.children[0].children[1].lastElementChild);
        continue;

      }else if(!data_e_releaser_name.includes("Oggi") && !data_e_releaser_name.includes(ieri)){ // >>>>>> se non c'è scritto OGGI/IERI, a prescindere dal numero di risposte, è vecchio, quindi lo salto direttamente
        el.children[0].children[1].removeChild(el.children[0].children[1].lastElementChild);
        continue;

      }else{ // >>>>>> post incerto da verificare all'interno
        //ricevo pagina html del thread
        let html_page = await get_thread_page(post_link);

        //converto pagina html in DOM
        let dom_page = document.createElement('html');
        dom_page.innerHTML = html_page;

        let smalltexts = dom_page.getElementsByClassName("smalltext");
        for(smalltext of smalltexts){
          if(smalltext.innerText.includes("»") && smalltext.innerText.includes("«") && smalltext.innerText.includes("Oggi") && !smalltext.innerText.includes("modifica") && !smalltext.innerText.includes("Risposta")) {
            el.children[0].children[0].children[0].style.color = 'orange';
          }
          if(smalltext.innerText.includes("»") && smalltext.innerText.includes("«") && smalltext.innerText.includes(ieri) && !smalltext.innerText.includes("modifica") && !smalltext.innerText.includes("Risposta")) {
            el.children[0].children[0].children[0].style.color = 'saddlebrown';
          }
        }
        el.children[0].children[1].removeChild(el.children[0].children[1].lastElementChild);
      }
    }

}

main();
长期地址
遇到问题?请前往 GitHub 提 Issues。