hwm-forum-tools - heroeswm.ru

Скрипт, упрощающий работу с форумом HWM

// ==UserScript==
// @name        hwm-forum-tools - heroeswm.ru
// @version     1.0.0
// @author      Бубна
// @description Скрипт, упрощающий работу с форумом HWM
// @match       http*://*.heroeswm.ru/forum_messages.php*
// @match       http*://*.lordswm.com/forum_messages.php*
// @namespace   bubna
// @grant       none
// @license     MIT
// @icon        https://dcdn.heroeswm.ru/hwmicon.ico
// ==/UserScript==

!function(n){var e={};function t(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return n[r].call(i.exports,i,i.exports,t),i.l=!0,i.exports}t.m=n,t.c=e,t.d=function(n,e,r){t.o(n,e)||Object.defineProperty(n,e,{enumerable:!0,get:r})},t.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},t.t=function(n,e){if(1&e&&(n=t(n)),8&e)return n;if(4&e&&"object"==typeof n&&n&&n.__esModule)return n;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:n}),2&e&&"string"!=typeof n)for(var i in n)t.d(r,i,function(e){return n[e]}.bind(null,i));return r},t.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return t.d(e,"a",e),e},t.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},t.p="/",t(t.s=0)}([function(n,e,t){"use strict";t.r(e);var r=function(n){document.querySelector("link[rel='shortcut icon']").remove();var e=document.createElement("link");e.href=n,e.rel="shortcut icon",document.getElementsByTagName("head")[0].appendChild(e)};function i(n){return function(n){if(Array.isArray(n))return o(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(!n)return;if("string"==typeof n)return o(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);"Object"===t&&n.constructor&&(t=n.constructor.name);if("Map"===t||"Set"===t)return Array.from(n);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return o(n,e)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function o(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function a(n){var e=document.getElementById("tools-counter-number"),t=document.getElementById("spinner");if(e&&t){if(t.style.display="none",e.style.opacity="1",0==window.timer)return window.timer=void 0,e.style.opacity="0",t.style.display="inline-block",l();e.innerHTML=" ".concat(n),setTimeout((function(){return n<=1?(l(),e.style.opacity="0",void(t.style.display="inline-block")):a(--n)}),1e3)}}function l(){var n=new Headers;n.append("Content-Type","text/plain; charset=windows-1251"),fetch(window.location.href,n).then((function(n){return n.arrayBuffer()})).then(d).catch((function(n){a(20)}))}function d(n){var e,t,o,l,d,s,c,u,m=new TextDecoder("windows-1251").decode(n),f=document.createElement("div");f.innerHTML=m;var p=f.getElementsByClassName("table3 forum c_darker td_bordered")[0],y=document.getElementsByClassName("table3 forum c_darker td_bordered")[0],h=null==p||null===(e=p.childNodes)||void 0===e?void 0:e[1],v=null==y||null===(t=y.childNodes)||void 0===t?void 0:t[1],g=h.childNodes.length-v.childNodes.length,b=i(document.getElementsByTagName("center")).filter((function(n){var e,t,r,i;return"1"==(null===(e=n.childNodes)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.innerText)||"<<"==(null===(r=n.childNodes)||void 0===r||null===(i=r[0])||void 0===i?void 0:i.innerText)})).at(-1),w=null===(o=i(b.childNodes).find((function(n){return"b"==n.localName})))||void 0===o?void 0:o.innerText,x=i(f.getElementsByTagName("center")).filter((function(n){var e,t,r,i;return"1"==(null===(e=n.childNodes)||void 0===e||null===(t=e[0])||void 0===t?void 0:t.innerText)||"<<"==(null===(r=n.childNodes)||void 0===r||null===(i=r[0])||void 0===i?void 0:i.innerText)})).at(-1);i(x.childNodes).at(-1).innerText-w==1&&(window.notiFavicon=!0,b.className+=" newPage"),g>0&&(window.notiFavicon=!0,window.newMessages=window.newMessages?g+window.newMessages:g),null==h||null===(l=h.childNodes)||void 0===l||l.forEach((function(n,e){var t;e>=(null==h||null===(t=h.childNodes)||void 0===t?void 0:t.length)-window.newMessages&&(n.className+=" newMessage")})),y.innerHTML=p.innerHTML,!document.hasFocus()&&window.notiFavicon&&r("https://raw.githubusercontent.com/bubn4/hwm-forum-tools/master/assets/favicon-noti.ico");var N=f.getElementsByClassName("pi"),T=document.getElementsByClassName("pi"),E=null===(d=N[0])||void 0===d?void 0:d.parentNode,M=null===(s=N[N.length-1])||void 0===s?void 0:s.parentNode,S=null===(c=T[0])||void 0===c?void 0:c.parentNode,A=null===(u=T[T.length-1])||void 0===u?void 0:u.parentNode;S.innerHTML=E.innerHTML,A.innerHTML=M.innerHTML,a(20)}function s(n){return function(n){if(Array.isArray(n))return c(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(!n)return;if("string"==typeof n)return c(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);"Object"===t&&n.constructor&&(t=n.constructor.name);if("Map"===t||"Set"===t)return Array.from(n);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return c(n,e)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function u(){window.timer=0}function m(n){return function(n){if(Array.isArray(n))return f(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(!n)return;if("string"==typeof n)return f(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);"Object"===t&&n.constructor&&(t=n.constructor.name);if("Map"===t||"Set"===t)return Array.from(n);if("Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t))return f(n,e)}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function f(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}document.addEventListener("visibilitychange",(function(n){"visible"==document.visibilityState&&(r(originalFaviconHref),window.notiFavicon=!1)})),function(){var n=s(document.getElementsByTagName("center")).find((function(n){return"К списку тем"==n.innerText}));if(n){n.childNodes[0].style.textDecoration="none";var e=document.createElement("div");e.id="tools-main";var t=document.createElement("div");t.id="tools-counter-link",t.innerText="Получить новые посты:",t.onclick=u;var r=document.createElement("div");r.id="tools-counter-number";var i=document.createElement("div");i.className="spinner gray animating",i.id="spinner";var o=document.createElement("div");o.className="spinner-blade";for(var l=0;l<8;l++)i.appendChild(o.cloneNode(!0));window.originalFaviconHref=document.querySelector("link[rel='shortcut icon']").href,e.appendChild(t),e.appendChild(r),e.appendChild(i),n.prepend(e);var d=document.createElement("style");d.innerText="\n  #tools-main {\n    display: inline-block;\n    margin-right: 30px;\n    padding: 5px;\n    color: #592C08;\n    position: relative;\n  }\n\n  #tools-counter-link {\n    display: inline;\n    cursor: pointer;\n    margin-right: 2px;\n  }\n\n  #tools-counter-number {\n    display: inline-block;\n  }\n\n  .newMessage {\n    border-left: 3px solid #007fff;\n  }\n\n  .newPage {\n    background-color: rgba(0,127,255, .3);\n  }\n\n  .spinner {\n    position: relative;\n    display: inline-block;\n    width: 13px;\n    height: 13px; \n    position: absolute;\n    top: 3px;\n    right: -3px;\n  }\n  .spinner .spinner-blade {\n    position: absolute;\n    top: 6.5px;\n    left: 3.5px;\n    width: 2.5px;\n    height: 5.5px;\n    background-color: #8e8e93;\n    border-radius: 1.25px;\n    animation: SpinnerBlade 1s linear infinite;\n    will-change: opacity; }\n    .spinner .spinner-blade:nth-child(1) {\n      transform: rotate(45deg) translateY(-6.5px);\n      animation-delay: -1.625s; }\n    .spinner .spinner-blade:nth-child(2) {\n      transform: rotate(90deg) translateY(-6.5px);\n      animation-delay: -1.5s; }\n    .spinner .spinner-blade:nth-child(3) {\n      transform: rotate(135deg) translateY(-6.5px);\n      animation-delay: -1.375s; }\n    .spinner .spinner-blade:nth-child(4) {\n      transform: rotate(180deg) translateY(-6.5px);\n      animation-delay: -1.25s; }\n    .spinner .spinner-blade:nth-child(5) {\n      transform: rotate(225deg) translateY(-6.5px);\n      animation-delay: -1.125s; }\n    .spinner .spinner-blade:nth-child(6) {\n      transform: rotate(270deg) translateY(-6.5px);\n      animation-delay: -1s; }\n    .spinner .spinner-blade:nth-child(7) {\n      transform: rotate(315deg) translateY(-6.5px);\n      animation-delay: -0.875s; }\n    .spinner .spinner-blade:nth-child(8) {\n      transform: rotate(360deg) translateY(-6.5px);\n      animation-delay: -0.75s; }\n\n@keyframes SpinnerBlade {\n  0% {\n    opacity: 0.85; }\n  50% {\n    opacity: 0.25; }\n  100% {\n    opacity: 0.25; } }\n\n",document.head.appendChild(d),a(20)}}(),window.onscroll=function(){var n=this;if(!this.throttle&&window.newMessages){this.throttle=!0;var e=m(document.getElementsByClassName("newMessage")),t=document.getElementsByClassName("newPage");setTimeout((function(){var r,i;null==t||null===(r=t[0])||void 0===r||null===(i=r.classList)||void 0===i||i.remove("newPage"),e.forEach((function(n){var e;(e=n.getBoundingClientRect()).top>=0&&e.left>=0&&e.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&e.right<=(window.innerWidth||document.documentElement.clientWidth)&&(n.classList.remove("newMessage"),window.newMessages>0&&window.newMessages--)})),n.throttle=!1}),3e3)}}}]);