anon6871

kurahen fastReplies

Jul 14th, 2020
344
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //// KURAHEN FASTREPLIES MODULE
  2. //// AUTHOR: ANON
  3. //// VERSION: 1.6
  4.  
  5. // DELETE ME
  6. // tred spadl doslownie w chwili kiedy chcialem go zbumpowac
  7. // === 1.6
  8. // >synchronizacja historii reakcji na rownoczesnie otwartych kartach
  9. // >pobieranie calych tredow z widoku boarda do zliczania reakcji [s]mozna wylaczyc w configu[/s]
  10. // >optymalizacja zliczania reakcji z widoku treda [s]najpierw pobranie calego treda, pozniej skanowanie lokalnie jedynie nowych postow[/s]
  11. // >skompresowanie kodu celem latwiejszego kopiowania [s]jak ktos chce przerabiac to niech sobie uzyje jakiegos beautifiera[/s]
  12. // ---1.6
  13. // zrealizowalem wszystkie plany, wiec to prawdopodobnie ostatnia wersja z duzymi zmianami
  14. // jak zawsze prosze pisac w razie bledow lub propozycji
  15. // DELETE ME /
  16.  
  17. // config
  18. const fastReplies_wholeThread = 1 // [bool] ladowanie calych tredow do zliczania reakcji; potencjalnie zasobozerne, ale raczej nie
  19. const fastReplies_position = 'center' // ['left' || 'center' || 'right'] pozycja okienka z reakcjami
  20. const fastReplies_confirmation = 1; // [bool] potwierdzanie wyslania reakcji
  21. const fastReplies_persistence = 1; // [bool] jedna reakcja na temat
  22. let fastReplies_pwd; // [string] ustawienie tutaj hasla wymusi jego zmiane, w przeciwnym razie brane jest haslo z cookies
  23. const fastReplies = [
  24.   {post:{com: 'Okurr'}, innerHTML: 'Okurr'},
  25.   {post:{com: 'Ebin'}, innerHTML: 'Ebin'},
  26.   {post:{com: 'Smrut.tiff', email: 'sage'}, innerHTML: 'Smrut.tiff'},
  27.   {post:{com: '#esesman'}, innerHTML: '<i style="font-size:50px" class="wycop wycop-bartoszewski"></i>'},
  28.   {post:{com: 'Wypierdalaj', email: 'sage'}, innerHTML: 'Wypierdalaj'},
  29.   {post:{com: ';_;'}, innerHTML: ';_;'}
  30. ];
  31. // config /
  32.  
  33. if(document.cookie&&!fastReplies_pwd){let e=document.cookie.split("; ").filter(e=>"password="==e.substr(0,9));e.length&&(fastReplies_pwd=decodeURIComponent(e[0].substr(9)))}else fastReplies_pwd||(fastReplies_pwd="test");let fastReplies_history,fastReplies_index=[];fastReplies.forEach(e=>{e.compare?fastReplies_index.push(e.compare):fastReplies_index.push(e.innerHTML)}),fastReplies_parseLocalStorage(),window.addEventListener("storage",e=>{"fastReplies"==e.key&&fastReplies_parseLocalStorage()});const fastReplies_observer=new MutationObserver(fastReplies_updateThreads);let fastReplies_subpage="board";tmp=document.URL.split("/"),tmp.length>=4&&"res"===tmp[4]&&(fastReplies_subpage="thread"),fastReplies_prepare();let fastReplies_lastPost=0;function fastReplies_observe(e){e?fastReplies_observer.observe(fastReplies_observer.elem,{childList:!0,subtree:!0}):fastReplies_observer.disconnect()}function fastReplies_prepare(){let e;e="thread"==fastReplies_subpage?".thread":"#delform",document.querySelector(e)?(fastReplies_observer.elem=document.querySelector(e),fastReplies_observe(1)):setTimeout(fastReplies_prepare,50)}function fastReplies_post(e,t){let s={mode:"regist",email:"",sub:"",upfile:"",spoiler:"0",nofile:"0",OPcb:"0",embed:"",pwd:fastReplies_pwd};Object.keys(e).forEach(t=>{s[t]=e[t]});let a="";Object.keys(s).forEach(e=>{a+=`${e}=${s[e]}&`}),a=a.substr(0,a.length-1);let l=new XMLHttpRequest;l.open("post","https://karachan.org/imgboard.php"),l.setRequestHeader("Content-type","application/x-www-form-urlencoded"),l.onreadystatechange=(()=>{4==l.readyState&&t&&t(l.responseText)}),l.send(a)}function fastReplies_sendReply(e,t){for(e=e.target;null===e.getAttribute("index");)e=e.parentNode;let s=e.parentNode.getElementsByClassName("replyButton");Object.keys(s).forEach(e=>{s[e].onclick=void 0});let a={},l=fastReplies[e.getAttribute("index")].post;Object.keys(l).forEach(e=>{a[e]=l[e]});let i=e.parentNode.parentNode.parentNode;a.board=i.getAttribute("data-board"),a.resto=i.getAttribute("id").substr(1),void 0!==t&&(a.com=t),e.parentNode.getElementsByClassName("status")[0].innerHTML="Wysyłanie...",grecaptcha.execute(CAPTCHA_SITEKEY,{action:"add_post"}).then(t=>{a.captcha=t,fastReplies_post(a,t=>{let l=[["Trwa aktualizacja indeksu","Wysłano!"],["CAPTCH","Błąd captchy."]];l=l.filter(e=>-1!=t.toLowerCase().indexOf(e[0].toLowerCase()));let r=i.getElementsByClassName("fastReplies")[0].getElementsByClassName("status")[0],n=0;l.length?(r.innerHTML=l[0][1],"Wysłano!"==l[0][1]?(e.style.boxShadow="inset 0 0 10px #0f0",fastReplies_observe(0),e.getElementsByClassName("fastReplies_counter")[0].children[0].innerHTML++,fastReplies_observe(1),fastReplies_history[a.resto]=e.getAttribute("index"),localStorage.fastReplies=JSON.stringify(fastReplies_history)):n=1):(r.innerHTML="Nieznany błąd.",n=1),fastReplies_persistence&&!n||Object.keys(s).forEach(e=>{fastReplies_confirmation?s[e].onclick=fastReplies_confirm:s[e].onclick=fastReplies_sendReply})})})}function fastReplies_confirm(e){for(e=e.target;null===e.getAttribute("index");)e=e.parentNode;fastReplies_observe(0);let t=document.createElement("button");t.innerHTML="Wyślij:",t.style.marginRight="8px",t.onclick=(t=>{t.preventDefault(),fastReplies_sendReply({target:e},t.target.nextSibling.value)});let s=document.createElement("input");s.value=fastReplies[e.getAttribute("index")].post.com;let a=e.parentNode.getElementsByClassName("status")[0];a.innerHTML="",a.append(t),a.append(s),fastReplies_observe(1)}async function fastReplies_updateThreads(){let e=document.querySelectorAll({board:'.thread:not([fastReplies_status="1"])',thread:".thread"}[fastReplies_subpage]);for(let t=0;t<e.length;t++){let s=e[t];if("board"==fastReplies_subpage){if(s.getElementsByClassName("fastReplies").length)continue}else"thread"==fastReplies_subpage&&fastReplies_observe(0);let a,l=s.getAttribute("fastReplies_status");if(s.setAttribute("fastReplies_status","1"),s.getElementsByClassName("expander").length){s.getElementsByClassName("expander")[0].addEventListener("click",e=>{e.target.parentNode.removeAttribute("fastReplies_status")})}if("board"==fastReplies_subpage&&fastReplies_wholeThread&&s.getElementsByClassName("expander").length||"thread"==fastReplies_subpage&&0==fastReplies_lastPost&&s.querySelector(".postContainer > .postContainer")){let e=`https://karachan.org/${s.getAttribute("data-board")}/res/${s.getAttribute("id").substr(1)}.html`,t=await fastReplies_get(e);a=(t=(new DOMParser).parseFromString(t,"text/html")).getElementsByClassName("replyContainer")}else a=s.getElementsByClassName("replyContainer");let i=[];for(let e=a.length-1;e>=0;e--){if("thread"==fastReplies_subpage){if(a[e].id.substr(2)<=fastReplies_lastPost)break}let t,s=fastReplies_postContent(a[e].getElementsByTagName("blockquote")[0]);-1!=(t=fastReplies_index.indexOf(s))&&("number"==typeof i[t]?i[t]++:i[t]=1)}if(a.length&&(fastReplies_lastPost=a[a.length-1].id.substr(2)),l){let e=s.getElementsByClassName("fastReplies")[0].getElementsByClassName("fastReplies_counter");Object.keys(i).forEach(t=>{i[t]>0?e[t].innerHTML=`(<span style='color:#2a2;'>${i[t]}</span>)`:e[t].innerHTML=`(${i[t]})`})}else{let e=document.createElement("div");e.setAttribute("style",`text-align:${fastReplies_position};`);let t=document.createElement("div");t.className="fastReplies reply",t.setAttribute("style","display:inline-block; text-align:center; margin-bottom:16px; padding:8px;"),t.innerHTML="<div style='margin-bottom:4px;'>Co o tym wszystkim sądzisz?</div>";let a=-1;"string"==typeof fastReplies_history[s.getAttribute("id").substr(1)]&&(a=fastReplies_history[s.getAttribute("id").substr(1)]);for(let e=0;e<fastReplies.length;e++){let s=fastReplies[e],l=document.createElement("div");l.className="replyButton",l.setAttribute("style",""),a==e&&(l.style.boxShadow="inset 0 0 10px #0f0"),s.attributes&&s.attributes.forEach(e=>{l.setAttribute(e[0],e[1])}),l.setAttribute("index",e);let r="<span>0</span>";i[e]&&(r=`<span style='color:#2a2;'>${i[e]}</span>`),l.innerHTML=`${s.innerHTML}<div class='fastReplies_counter' style='margin-top:4px;font-size:12px;'>(${r})</div`,l.setAttribute("style",l.getAttribute("style")+"display:inline-block;border: 1px gray solid; border-radius: 4px; padding:6px; margin:8px; cursor:pointer;"),fastReplies_persistence&&-1!=a||(fastReplies_confirmation?l.onclick=fastReplies_confirm:l.onclick=fastReplies_sendReply),t.append(l)}let l=document.createElement("div");l.className="status",t.append(l),e.append(t);let r=s.getElementsByClassName("postContainer")[0];s.insertBefore(e,r.nextSibling)}"thread"==fastReplies_subpage&&fastReplies_observe(1)}}function fastReplies_postContent(e){let t=e.childNodes;for(str="",i=0;i<t.length&&"backlink"!=t[i].className;i++)t[i].outerHTML?str+=t[i].outerHTML:t[i].textContent&&(str+=t[i].textContent);let s=" <br>";return str.substr(-s.length)==s&&(str=str.substr(0,str.length-s.length)),str}function fastReplies_parseLocalStorage(){if(bool=0,void 0===localStorage.fastReplies)bool=1;else{try{fastReplies_history=JSON.parse(localStorage.fastReplies)}catch{bool=1}0==bool&&"object"!=typeof fastReplies_history&&(bool=1)}bool&&(fastReplies_history={},localStorage.fastReplies=JSON.stringify(fastReplies_history))}function fastReplies_get(e){return new Promise(t=>{let s=new XMLHttpRequest;s.open("get",e,!0),s.onreadystatechange=(()=>{4==s.readyState&&t(s.responseText)}),s.send()})}
  34.  
  35. //// KURAHEN FASTREPLIES MODULE /
Add Comment
Please, Sign In to add comment