Benachrichtigung bei Erwähnung in der SB oder einer neuen PN und Userauswahl mit @ in der SB
// ==UserScript== // @name BS Notification // @namespace https://bs.to/ // @version 4.3.1 // @description Benachrichtigung bei Erwähnung in der SB oder einer neuen PN und Userauswahl mit @ in der SB // @author Asu_nyan // @match https://bs.to/* // @match https://burningseries.co/* // @icon https://bs.to/favicon.ico // @grant none // @require https://greasyfork.org/scripts/375096-bs-library/code/BS_Library.js?version=651891 // ==/UserScript== const BS = window.BS; let username = BS.Module.Get('.navigation strong').innerText; let alternatives = [`@${username}`]; let userpattern = `(${ alternatives.join('|') })`; let regex = new RegExp(userpattern, "ig"); let posts = BS.Module.Get('#sbPosts'); posts.addEventListener("DOMNodeInserted", (a,b) => { if(a.target.localName == "dd" && regex.test(a.target.innerHTML)) { occurrence(); let datauser = a.target.previousSibling.dataset.user; let time = a.target.previousSibling.getElementsByTagName('time')[0].innerText; let title = (datauser != undefined) ? datauser : "Du wurdest erwähnt."; let options = { body: a.target.innerText + "\r\n" + time, icon: "https://bs.to/favicon.ico", }; new Notification(title, options); } }); if (!Array.prototype.remI) { let ars = ["Array", "HTMLCollection"]; for (let i = 0; i < ars.length; i++) { Object.defineProperty(eval(ars[i]).prototype, "remI", { enumerable: false, value: function (index) { for (let i = 0; i < this.length; i++) { if (i > index) { this[i - 1] = this[i]; } } this.length--; } }); Object.defineProperty(eval(ars[i]).prototype, "f", { enumerable: false, value: function findArray(f, equal = false, path = "", first = true) { let index = -1; for (let i = 0; i < this.length; i++) { if (equal) { if (f === eval("this[i]" + path)) { index = i; if (first) { return index; } } } else { if (f.toString().indexOf(eval("this[i]" + path)) > -1) { index = i; if (first) { return index; } } } } return index; } }); } } (function() { 'use strict'; if (Notification.permission !== 'denied' || Notification.permission === 'default') { Notification.requestPermission((permission) => { if (permission === 'granted') { console.log(`Notification Permission: ${ permission }`); } }); } setInterval(BS.PN.NotifyIfNew, 5000); occurrence(); setTimeout(function(){ let sB=BS.Module.Get('#sbMsg'); let par=sB.parentElement; sB.oninput=function(a,b,c){ let usercontainer=BS.Module.Get('#sbUser').children; let onlineNames=[]; for(let i=par.children.length-1;i>-1;i--){ if(par.children[i].localName==="li12"){ par.children[i].remove(); } } for(let t=0;t<usercontainer.length;t++){ if(sB.value.length>2){ if(sB.value.indexOf("@")>-1 && usercontainer[t].children[0].textContent.toLowerCase().indexOf(sB.value.split("@")[1].toLowerCase())===0){ onlineNames.push(usercontainer[t].children[0].textContent); } } } var active=BS.Module.Get('#sbPosts').children; for(let t=0;t<active.length;t+=2){ if(onlineNames.f(active[t].children[0].textContent)>-1){ onlineNames.remI(onlineNames.f(active[t].children[0].textContent,true)); onlineNames.push(active[t].children[0].textContent); }else{ if(sB.value.length>2&&sB.value.indexOf("@")>-1 && active[t].children[0].textContent.toLowerCase().indexOf(sB.value.split("@")[1].toLowerCase())===0){ onlineNames.push(active[t].children[0].textContent); } } } sB.onl=onlineNames; sB.index=0; if(sB.value.length>2&&onlineNames.length>0){ let field=document.createElement("li12"); field.style.width="200px"; let height=onlineNames.length*20+20; let top=sB.offsetTop-(height)-5; field.style.position="absolute"; field.style.top=top+"px"; field.style.height=height+"px"; field.style.left=sB.offsetLeft+"px"; field.style.background="white"; field.style.border="rgb(100, 160, 255) 1.5px solid"; field.style.borderRadius= "4px"; sB.fie=field; for(let j=0;j<onlineNames.length;j++){ let username=document.createElement("el"); username.innerText=onlineNames[j]; username.style.position="absolute"; username.style.top=j*20+8+"px"; username.style.left=20+"px"; username.style.width="160px"; username.style.color="black"; field.append(username); } par.append(field); } }; sB.onkeydown=function(a,b,c){ if(a.keyCode===38||a.keyCode===40){ if(sB.fie.children[sB.index]){ sB.fie.children[sB.index].style.backgroundColor="white"; } function index(plus){ if(plus){ sB.index++; if(sB.index>sB.onl.length-1){ sB.index=0; } }else{ sB.index--; if(sB.index==-1){ sB.index=sB.onl.length-1; } } } if(sB.index===undefined){ sB.index=0; } if(a.keyCode===38){ index(false); }else{ index(true); } sB.fie.children[sB.index].style.backgroundColor="rgb(100, 160, 255)"; sB.value=sB.value.replace(sB.value.split("@")[1].split(" ")[0],sB.onl[sB.index]+" "); }else if(a.keyCode===9){ //tab if(sB.onl.length===1){ sB.value=sB.value.replace(sB.value.split("@")[1].split(" ")[0],sB.onl[0]+" "); }else{ sB.value=sB.value.replace(sB.value.split("@")[1].split(" ")[0],sB.onl[sB.onl.length-1]+" "); } for(let i=par.children.length-1;i>-1;i--){ if(par.children[i].localName==="li12"){ par.children[i].remove(); } } setTimeout(function(sB){ sB.focus(); sB.selectionStart=sB.value.length; sB.selectionEnd=sB.value.length; },1,sB); } if(a.keyCode==13){ return Shoutbox.checkEnter(a); } }; },1000); })(); function occurrence(){ let posts = document.getElementById('sbPosts'); let postsContent = posts.children; for(let i = 0; i < postsContent.length; i++){ if(postsContent[i].localName == "dd"){ postsContent[i].innerHTML = postsContent[i].innerHTML.replace(regex, "<i style='color:yellow'>@"+username+"</i>"); } } }