🤬
Revision indexing in progress... (symbol navigation in revisions will be accurate after indexed)
  • ■ ■ ■ ■ ■ ■
    HowTo/LeaveItToJS/ExtractMeduimWriteups.js
    1  -processingJS = 'async function Processing() { if (DetectDailyOrMonthly() == "daily") await DayProcessing(); else await MonthlyTagProcessing();}async function DayProcessing() { console.log("DayProcessing is started"); clp_wrts = []; emp_wrts = []; wrt_num = 0; base_wrt_xpath = "/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[2]/div[NUMNUM]"; while (true) { wrt_num++; wrt_xpath = base_wrt_xpath.replace("NUMNUM",wrt_num); clap_num = GetClapNumber(wrt_xpath); if (clap_num == -1) break; if (clap_num > 50) clp_wrts.push(GetWriteupInfo(wrt_xpath)); else emp_wrts.push(GetWriteupInfo(wrt_xpath)); } console.log("writeups is procssed."); UpdateLocalStroageItem("clp_wrts", clp_wrts); UpdateLocalStroageItem("emp_wrts", emp_wrts); localStorage.setItem("DayLock", "RELEAS"); console.log("localstorage is upated"); window.close(``, `_parent`, ``);}async function MonthlyTagProcessing() { console.log("MonthlyTagProcessing is started"); clp_wrts = []; emp_wrts = []; base_wrt_xpath = "/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[2]/div[NUMNUM]"; await SortLatest(); await ScrollDown(); wrt_num=0; while (true) { wrt_num++; wrt_xpath = base_wrt_xpath.replace("NUMNUM",wrt_num); clap_num = GetClapNumber(wrt_xpath); if (clap_num == -1) break; if (clap_num > 50) clp_wrts.push(GetWriteupInfo(wrt_xpath)); else emp_wrts.push(GetWriteupInfo(wrt_xpath)); } console.log("writeups is procssed."); UpdateLocalStroageItem("clp_wrts", clp_wrts); UpdateLocalStroageItem("emp_wrts", emp_wrts); localStorage.setItem("TagLock", "RELEAS"); console.log("localstorage is upated"); window.close(``, `_parent`, ``);}function DetectDailyOrMonthly() { link = window.location.href; if (link.split("/")[link.split("/").length-3].startsWith("202")) return "daily"; else return "monthly";}function GetClapNumber(wrt_xpath) { wrt = GetElementByXpath(wrt_xpath); if (wrt == null) return -1; btn_xpath = wrt_xpath + "/div/div/div[4]/div[1]/div/span/button"; btn = GetElementByXpath(btn_xpath); if (btn == null) return 0; return btn.textContent;}function GetWriteupInfo(wrt_xpath) { name_xpath1 = wrt_xpath + "/div/div/div[2]/a/div/section/div[2]/div/h3"; name_xpath2 = wrt_xpath + "/div/div/div[2]/div/section/div/div/a/h3"; name_xpath3 = wrt_xpath + "/div/div/div[2]/a/div/section/div[2]/div/p[1]/strong"; name_xpath4 = wrt_xpath + "/div/div/div[2]/div/section/div/div/h3/a"; name_xpath5 = wrt_xpath + "/div/div/div[2]/a/div/section/div[2]/div/p[1]"; name_xpath6 = wrt_xpath + "/div/div/div[2]/div/section/div/div/a/p[1]"; a_xpath = wrt_xpath + "/div/div/div[2]/a"; date_xpath = wrt_xpath + "/div/div/div[1]/div/div/div[2]/div/a"; name_el = GetElementByXpath(name_xpath1); if (name_el == null) name_el = GetElementByXpath(name_xpath2); if (name_el == null) name_el = GetElementByXpath(name_xpath3); if (name_el == null) name_el = GetElementByXpath(name_xpath4); if (name_el == null) name_el = GetElementByXpath(name_xpath5); if (name_el == null) name_el = GetElementByXpath(name_xpath6); name = name_el.textContent; link = GetElementByXpath(a_xpath).href.split("?")[0]; date = GetElementByXpath(date_xpath).text; return {name:name, date:date, link:link};}function GetElementByXpath(path) { return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}function UpdateLocalStroageItem(name , writeups) { value_from_storage = GetLocalStroageItem(name); writeups.forEach(function(writeup) {value_from_storage.push(writeup)}); output = SortUniqArray(value_from_storage); localStorage.setItem(name, JSON.stringify(output));}function GetLocalStroageItem(name) { ans = []; value = localStorage.getItem(name); if (value == null || value == "") return ans; return JSON.parse(value);}function SortUniqArray(array) { array.sort(function(a, b) { return ("" + a.link).localeCompare(b.link); }); for (let i=0; i<array.length-1; i++) if (array[i].link == array[i+1].link) { array.splice(i+1,1); i--; } array.sort(function(a, b) { t = parseInt(a.date.split(" ")[1]); s = parseInt(b.date.split(" ")[1]); return s-t; }); return array;}async function SortLatest() { btn1_xpath1="/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/div/div[5]/button"; btn1_xpath2="/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/div/div[4]/button"; btn2_xpath1="/html/body/div[1]/div[2]/div/div[4]/div[1]/ul/li[3]/button"; btn1_el = GetElementByXpath(btn1_xpath1); if (btn1_el == null) btn1_el = GetElementByXpath(btn1_xpath2); btn1_el.click(); await new Promise(r => setTimeout(r, 1000)); btn2_el = GetElementByXpath(btn2_xpath1); btn2_el.click(); await new Promise(r => setTimeout(r, 1000));}async function ScrollDown() { for (let i=0; i<10; i++) { window.scrollTo(0, document.body.scrollHeight); await new Promise(r => setTimeout(r, 3000)); }}Processing()';
     1 +processingJS = 'async function Processing() { if (DetectDailyOrMonthly() == "daily") await DayProcessing(); else await MonthlyTagProcessing();}async function DayProcessing() { console.log("DayProcessing is started"); clp_wrts = []; emp_wrts = []; wrt_num = 0; base_wrt_xpath = "/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[2]/div[NUMNUM]"; while (true) { wrt_num++; wrt_xpath = base_wrt_xpath.replace("NUMNUM",wrt_num); clap_num = GetClapNumber(wrt_xpath); if (clap_num == -1) break; if (clap_num > 50) clp_wrts.push(await GetWriteupInfo(wrt_xpath)); else emp_wrts.push(await GetWriteupInfo(wrt_xpath)); } console.log("writeups is procssed."); UpdateLocalStroageItem("clp_wrts", clp_wrts); UpdateLocalStroageItem("emp_wrts", emp_wrts); localStorage.setItem("DayLock", "RELEAS"); console.log("localstorage is upated"); window.close(``, `_parent`, ``);}async function MonthlyTagProcessing() { console.log("MonthlyTagProcessing is started"); clp_wrts = []; emp_wrts = []; base_wrt_xpath = "/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[2]/div[NUMNUM]"; await SortLatest(); await ScrollDown(); wrt_num=0; while (true) { wrt_num++; wrt_xpath = base_wrt_xpath.replace("NUMNUM",wrt_num); clap_num = GetClapNumber(wrt_xpath); if (clap_num == -1) break; if (clap_num > 50) clp_wrts.push(await GetWriteupInfo(wrt_xpath)); else emp_wrts.push(await GetWriteupInfo(wrt_xpath)); } console.log("writeups is procssed."); UpdateLocalStroageItem("clp_wrts", clp_wrts); UpdateLocalStroageItem("emp_wrts", emp_wrts); localStorage.setItem("TagLock", "RELEAS"); console.log("localstorage is upated"); window.close(``, `_parent`, ``);}function DetectDailyOrMonthly() { link = window.location.href; if (link.split("/")[link.split("/").length-3].startsWith("202")) return "daily"; else return "monthly";}function GetClapNumber(wrt_xpath) { wrt = GetElementByXpath(wrt_xpath); if (wrt == null) return -1; btn_xpath = wrt_xpath + "/div/div/div[4]/div[1]/div/span/button"; btn = GetElementByXpath(btn_xpath); if (btn == null) return 0; return btn.textContent;}async function GetWriteupInfo(wrt_xpath) { name_xpaths = [ "/div/div/div[2]/a/div/section/div[2]/div/h3", "/div/div/div[2]/div/section/div/div/a/h3", "/div/div/div[2]/a/div/section/div[2]/div/p[1]/strong", "/div/div/div[2]/div/section/div/div/h3/a", "/div/div/div[2]/a/div/section/div[2]/div/p[1]", "/div/div/div[2]/div/section/div/div/a/p[1]", "/div/div/div[2]/a/div/section/div[2]/div/h4", "/div/div/div[2]/div/section/div/div/p" ]; a_xpath = wrt_xpath + "/div/div/div[2]/a"; date_xpath = wrt_xpath + "/div/div/div[1]/div/div/div[2]/div/a"; name_el = null; for (let i=0; i<name_xpaths.length; i++) { console.log(i); name_el = GetElementByXpath(wrt_xpath + name_xpaths[i]); if (name_el != null) break; } name = name_el.textContent; link = GetElementByXpath(a_xpath).href.split("?")[0]; date = GetElementByXpath(date_xpath).text; return {name:name, date:date, link:link};}function GetElementByXpath(path) { return document.evaluate(path, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;}function UpdateLocalStroageItem(name , writeups) { value_from_storage = GetLocalStroageItem(name); writeups.forEach(function(writeup) {value_from_storage.push(writeup)}); output = SortUniqArray(value_from_storage); localStorage.setItem(name, JSON.stringify(output));}function GetLocalStroageItem(name) { ans = []; value = localStorage.getItem(name); if (value == null || value == "") return ans; return JSON.parse(value);}function SortUniqArray(array) { array.sort(function(a, b) { return ("" + a.link).localeCompare(b.link); }); for (let i=0; i<array.length-1; i++) if (array[i].link == array[i+1].link) { array.splice(i+1,1); i--; } array.sort(function(a, b) { t = parseInt(a.date.split(" ")[1]); s = parseInt(b.date.split(" ")[1]); return s-t; }); return array;}async function SortLatest() { btn1_xpath1="/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/div/div[5]/button"; btn1_xpath2="/html/body/div[1]/div[2]/div/div[3]/div/div/div[2]/div[1]/div/div[4]/button"; btn2_xpath1="/html/body/div[1]/div[2]/div/div[4]/div[1]/ul/li[3]/button"; btn1_el = GetElementByXpath(btn1_xpath1); if (btn1_el == null) btn1_el = GetElementByXpath(btn1_xpath2); btn1_el.click(); await new Promise(r => setTimeout(r, 1000)); btn2_el = GetElementByXpath(btn2_xpath1); btn2_el.click(); await new Promise(r => setTimeout(r, 1000));}async function ScrollDown() { for (let i=0; i<10; i++) { window.scrollTo(0, document.body.scrollHeight); await new Promise(r => setTimeout(r, 3000)); }}Processing()';
    2 2   
    3 3  async function ExtractMeduimWriteups(last_day, end_day=31){
    4 4   daily_tags = [
    skipped 48 lines
    53 53   ReleaseIt("day");
    54 54   
    55 55   for (let i = day; i <= end_day; i++) {
    56  - console.log("Process day: " + days_str[i]);
     56 + console.log("Processing day " + days_str[i] + " ....");
    57 57   await WaitForPreviuosProcessing("day");
    58 58   
    59 59   next_url = base_url + days_str[i];
    skipped 35 lines
    95 95   localStorage.setItem(lock_name, "LOCK");
    96 96   break;
    97 97   }
    98  - await new Promise(r => setTimeout(r, 10000));
     98 + await new Promise(r => setTimeout(r, 5000));
    99 99   }
    100 100  }
    101 101   
    skipped 61 lines
Please wait...
Page is in error, reload to recover