你需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式
你需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式
你需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式
你需要先安装一款用户样式管理器扩展后才能安装此样式
你需要先安装一款用户样式管理器扩展后才能安装此样式
你需要先安装一款用户样式管理器扩展后才能安装此样式
(我已安装用户样式管理器,立即安装用户样式!)
// ==UserScript==
// @name BS Notification
// @namespace https://bs.to/
// @version 3.5
// @description Benachrichtigung bei Erwähnung in der SB oder einer neuen PN und Userauswahl mit @ in der SB
// @author Asu
// @match https://bs.to
// @match https://bs.to/home
// @icon https://bs.to/favicon.ico
// @require https://greasyfork.org/scripts/368877-bs-script-library/code/BS_Script_Library.js?version=601546
// @grant none
// ==/UserScript==
// Andere Sounds:
// Ding: https://www.myinstants.com/media/sounds/ding_2.mp3
// Forum Notification: https://board.bs.to/applications/core/interface/sounds/notification.mp3
// Surprise Motherfucker: https://dl.dropboxusercontent.com/content_link/0sJVLvb4JIFKg5IavxBUmVAkHFUyZ91AfsNs6PXnNSrlaQmpVQpLlWrrfzUC7pQD/file?dl=0&duc_id=dropbox_duc_id
var sound = new Audio("https://board.bs.to/applications/core/interface/sounds/notification.mp3");
var customuserarray=[];
var username=document.getElementById("navigation").children[0].childNodes[1].innerText;
var userpattern = "@" + username;
var regex = new RegExp(userpattern, "ig");
function x (){
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>");
}
}
}
function checkMessages() {
let xhr = new XMLHttpRequest();
xhr.open('GET', 'https://bs.to/messages', true);
xhr.onload = () => {
let div = document.createElement('div');
div.innerHTML = xhr.responseText;
let unread = div.querySelectorAll('.unread');
let messages = (window.localStorage.messages) ? JSON.parse(window.localStorage.messages) : [];
if(unread.length > 0) {
for(let i = 0; i < unread.length; i++) {
let msg = new Message({
id: unread[i].children[1].children[0].getAttribute('href').split('/')[unread[i].children[1].children[0].getAttribute('href').split('/').length-1].split(':')[1],
subject: unread[i].children[1].children[0].innerText,
url: "https://bs.to/" + unread[i].children[1].children[0].getAttribute('href'),
from: unread[i].children[2].children[0].innerText,
to: unread[i].children[3].children[0].innerText,
timestamp: unread[i].querySelector('time').innerText,
title: `Neue Nachricht von ${unread[i].children[2].children[0].innerText}`
});
if (!(messages.some(e => e.id === msg.id))) {
msg.notify();
messages.push(msg);
}
}
window.localStorage.messages = JSON.stringify(messages);
}
};
xhr.send();
}
try{
username=document.getElementById("navigation").children[0].childNodes[1].innerText;
}catch(err){
console.err(err);
}
if (!Array.prototype.remI) {
var ars = ["Array", "HTMLCollection"];
for (var i = 0; i < ars.length; i++) {
Object.defineProperty(eval(ars[i]).prototype, "remI", {
enumerable: false,
value: function (index) {
for (var 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) {
var index = -1;
for (var 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';
let posts = document.getElementById('sbPosts');
posts.addEventListener("DOMNodeInserted", (a,b) => {
if(a.target.localName == "dd" && regex.test(a.target.innerHTML))
{
x();
let datauser = a.target.previousSibling.dataset.user;
let title = (datauser != undefined) ? datauser : "Neue Benachrichtigung";
let options = {
body: a.target.innerText,
icon: "https://bs.to/favicon.ico",
};
sound.play();
let n = new Notification(title, options);
}
});
// Your code here...
setInterval(checkMessages, 1000*3);
x();
//übernommener code:
setTimeout(function(){
try{
username=document.getElementById("navigation").children[0].childNodes[1].innerText;
}catch(err){}
var sB=$(sbMsg)[0];
var par=sB.parentElement;
sB.oninput=function(a,b,c){
var usercontainer=$(sbUserCont)[0].children;
var onlineNames=[];
for(var i=par.children.length-1;i>-1;i--){
if(par.children[i].localName==="li12"){
par.children[i].remove();
}
}
for(var 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=$(sbPosts)[0].children;
for(var 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){
var field=document.createElement("li12");
field.style.width="200px";
var height=onlineNames.length*20+20;
var 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(var j=0;j<onlineNames.length;j++){
var 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(var 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);
})();