erweiterung (benachrichtigungen) für das gesehende videos ausblenden oder makieren

zeigt an wie viele nachrichten gelesen und ungelesen sind mit farbauswahl

Ovu skriptu ne treba izravno instalirati. To je biblioteka za druge skripte koje se uključuju u meta direktivu // @require https://update.greasyfork.org/scripts/488550/1365026/erweiterung%20%28benachrichtigungen%29%20f%C3%BCr%20das%20%20gesehende%20videos%20ausblenden%20oder%20makieren.js

// ==UserScript==
// @name         erweiterung (benachrichtigungen für das  gesehende videos ausblenden oder makieren
// @namespace    https://basti1012.bplaced.net
// @version      1.5
// @description  zeigt an wie viele nachrichten gelesen und ungelesen sind mit farbauswahl
// ACHTUNG: Dieses Script läuft nur mit meinen Userscript "Bastis Youtube Multi Script,gesehende videos ausblenden oder makieren", 
// was in den nächsten Tagen Online kommt.
// Zu den Hauptscript kann dieses Script einfach eingebunden werden und das Hauptscript hat eine Funktion mehr.
// Alle Neue einstellmöglichkeiten der erweiterungen können in das Hauptmenü des Hauptscriptes eingestellt werden.
// @author       basti1012
// @allFrames    true
// @run-at document-end
// @license MIT License
// @noframes
// @icon        https://basti1012.de/images/favicon.png
// ==/UserScript==
var start1 = performance.now();
if(!array_localsdtorage){
    var array_localsdtorage=[];
}
if(!erweiterungs_einstellungs_array){
var erweiterungs_einstellungs_array=[];
}

array_localsdtorage.push(["srollen_hoehe_in_px_benachrichtungen", 50000],["reloaden_nach_millisekunden_benachrichtungen", 60000],["nicht_gesehene_benachtichtigung_color","#ff0000"],["gesehene_benachtichtigung_color","##00ff00"],["erweiterung_benachrichtigung_aktivieren",false],["sound_benachrichtungen",true],["sound_link_benachrichtungen",""]);

function benachrichtigungen_auslesen(){
    if(localStorage.getItem('erweiterung_benachrichtigung_aktivieren')=='true'){
        function isValidURL(string){
            var res = string.match(/(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/g);
            return (res !== null)
        }
        if(localStorage.getItem('sound_benachrichtungen')=='true'){
            var checkurl = localStorage.getItem('sound_link_benachrichtungen');
            var be_sound = document.createElement("audio");
            if(localStorage.getItem('sound_link_benachrichtungen')=='' || checkurl.length<=11 || isValidURL(checkurl)!=true){
                 be_sound.src = "https://basti1012.bplaced.net/media/1.mp3";
                 be_sound.type = "audio/ogg";
                 be_sound.autoplay = "true";
            }else{
                be_sound.src=checkurl;
            }
        }
        var bo = document.getElementsByTagName("body")[0];
        bo.appendChild(be_sound);
        var gg=0;
        var benachrichtigung_interval=setInterval(function(){
            gg++;
            if(document.querySelector('#buttons > .style-scope ~ .style-scope .undefined')){// && document.querySelector('ytd-notification-topbar-button-renderer')){
                console.log('%cGlocke gefunden','color:green');
                clearInterval(benachrichtigung_interval);
                var startinterval;
                var erstclick=false;
                var new_message_helper;
                function benachrichtigungs_unction_interval(){
                    if(erstclick==false){
                        if(document.querySelector('#buttons > .style-scope ~ .style-scope .undefined')){
                            document.querySelector('#buttons > .style-scope ~ .style-scope .undefined').click();
                            document.querySelector('#contentWrapper').style.display='none';
                        // setTimeout(function(){
                            document.querySelector('#contentWrapper #container').scrollBy(0,localStorage.getItem('srollen_hoehe_in_px_benachrichtungen'));

                            document.querySelector('#contentWrapper').style.display='block';
                            document.querySelector('#buttons > .style-scope ~ .style-scope .undefined').click();
                        // },444);
                            clearInterval(startinterval);
                            erstclick=true;
                        }else{
                            return true;
                        }
                   }

                   var nn=document.querySelector('ytd-notification-topbar-button-renderer');
                   nn.click();

                   document.querySelector('#contentWrapper').style.display='none';
                   document.querySelector('#contentWrapper #container').scrollBy(0,localStorage.getItem('srollen_hoehe_in_px_benachrichtungen'));

                   var_menge_all_post=document.querySelectorAll('#contentWrapper #container #sections #items ytd-notification-renderer').length;
                   console.log('%cGlocke insgesamt '+var_menge_all_post+' erhalten','color:orange');
                   document.querySelectorAll('#contentWrapper #container #sections #items ytd-notification-renderer:not(.unread)').forEach(function(ba){
                       ba.style.background='rgba(255,0,0,0.5)';
                   });

                   var_menge_unread_post=document.querySelectorAll('#contentWrapper #container #sections #items .unread').length;
                   console.log('%cGlocke nachrichten, ungelesene Nachrichten '+var_menge_unread_post+' / '+var_menge_all_post,'color:green');
                   document.querySelectorAll('#contentWrapper #container #sections #items .unread').forEach(function(ba1){
                       ba1.style.background='rgba(0,255,0,0.5)';
                   });

                   console.log('%cGlocke nachrichten '+var_menge_unread_post,'color:green');
                   var tooltip_var=document.querySelector('ytd-notification-topbar-button-renderer #tooltip');
                   tooltip_var.innerHTML=`Sie haben noch ${var_menge_unread_post} ungelesene Benachrichtigungen  <br> von insgesamt ${var_menge_all_post}`;
                   document.querySelector('#buttons > .style-scope ~ .style-scope .undefined').innerHTML=`<div title="Sie haben noch ${var_menge_unread_post} ungelesene Benachrichtigungen von insgesamt ${var_menge_all_post}" style="width:16px;background:green;position: absolute;top: -8px;left:8px;padding: 2px;border: 1px solid white;border-radius: 50%;text-align: center;font-size: 9px;font-weight: 200;line-height: 16px;" class="yt-spec-icon-badge-shape__badge">${var_menge_unread_post}/${var_menge_all_post}</div>
                   <svg xmlns="http://www.w3.org/2000/svg" enable-background="new 0 0 24 24" height="24" viewBox="0 0 24 24" width="24" focusable="false" style="pointer-events: none; display: block; width: 100%; height: 100%;"><path d="M10 20h4c0 1.1-.9 2-2 2s-2-.9-2-2zm10-2.65V19H4v-1.65l2-1.88v-5.15C6 7.4 7.56 5.1 10 4.34v-.38c0-1.42 1.49-2.5 2.99-1.76.65.32 1.01 1.03 1.01 1.76v.39c2.44.75 4 3.06 4 5.98v5.15l2 1.87zm-1 .42-2-1.88v-5.47c0-2.47-1.19-4.36-3.13-5.1-1.26-.53-2.64-.5-3.84.03C8.15 6.11 7 7.99 7 10.42v5.47l-2 1.88V18h14v-.23z"></path></svg>`;
                   document.querySelector('#contentWrapper').style.display='block';

                   nn.click();
                   console.log(new_message_helper+'  =  '+var_menge_unread_post);
                   if(new_message_helper!=var_menge_unread_post){
                       nn.style.background='red';
                       nn.style.borderRadius='50%';
                       if(localStorage.getItem('sound_benachrichtungen')=='true'){
                           be_sound.play();
                       }
                       setTimeout(function(){
                           nn.style.background='none';
                       },1000);
                   }
                   new_message_helper=var_menge_unread_post;
                   var benachrichtigungs_timer_counter=localStorage.getItem('reloaden_nach_millisekunden_benachrichtungen');
                   var sekunden_ablauf=benachrichtigungs_timer_counter/1000;
                   var nachrichten_tooltip_info_timer=setInterval(function(){
                       sekunden_ablauf--;
                       tooltip_var.innerHTML=`Sie haben noch ${var_menge_unread_post} ungelesene Benachrichtigungen  <br>
                       von insgesamt ${var_menge_all_post}<br>
                       Nachrichten werden alle ${benachrichtigungs_timer_counter/1000} Sekunden aktualiesiert<br>
                       Nächte aktualisierung in ${sekunden_ablauf} Sekunden`;
                       if(sekunden_ablauf<=0){
                           clearInterval(nachrichten_tooltip_info_timer);
                           benachrichtigungs_unction_interval();
                       }
                   },1000);
               }
               startinterval=setInterval(function(){
                   benachrichtigungs_unction_interval();
               },1000);
           }else{
               console.log('%cGlocke durch scriptnoch noch nicht gefunden nach '+gg+' versuchen','color:rgba(188,1,1,0.5)');
           }
           if(gg>=10){
               clearInterval(benachrichtigung_interval);
               console.log('%cGlocke durch scriptnoch nicht gefunden nach '+gg+' versuchen, versuche werden jetzt abgevrochen durch timeout','color:red');
               gg=0;
           }
       },4000);
       return 1;
	}else{
		return 2;
	}
	return 3;
}
if(localStorage.getItem('sound_benachrichtungen')=='true'){
    var checkboxerweiterungsoundaktiv ='checked="true"';
}else{
    var checkboxerweiterungsoundaktiv ='';
}
if(localStorage.getItem('erweiterung_benachrichtigung_aktivieren')=='true'){
    var checkboxerweiterungaktiv ='checked="true"';
}else{
    var checkboxerweiterungaktiv ='';
}
if(!erweiterungs_einstellungs_array){
    var erweiterungs_einstellungs_array = [];
}
erweiterungs_einstellungs_array.push(['benachrichtigungen_auslesen',`
<label>
    <label style="display:flex;flex-direction:column">
        <p>
            <strong>Benachrichtigungs tool</strong>
            <input type="checkbox" id="erweiterungbenachrichtigungaktivieren" ${checkboxerweiterungaktiv}>
            <span>?
                <small>
                    Mit dieser funktion werden die benachrichtigen auch mehr als 0 angezeigt.Mit farbauswahl für nicht gelesene und gelesene benachrichtigungen uvm.
                </small>
            </span>
        </p>
    </label>
    <label style="display:flex;flex-direction:column">
	<p>Farbe gesehende Benachrichtigung:
	    <input type="color" value="${localStorage.getItem('gesehene_benachtichtigung_color')}" id="gesehenebenachtichtigungcolor">
		</p>
	</label>
     <label style="display:flex;flex-direction:column"><p>
	 Farbe nicht gesehene Benachrichtigung:
	    <input type="color" value="${localStorage.getItem('nicht_gesehene_benachtichtigung_color')}" id="nichtgesehenebenachtichtigungcolor"></p>
	</label>
     <label style="display:flex;flex-direction:column"><p>
	 Scrolhöhe in der Benachrichtigungen:
        <input type="number" value="${localStorage.getItem('srollen_hoehe_in_px_benachrichtungen')}" id="srollenhoeheinpxbenachrichtungen"></p>
	</label>
    <label style="display:flex;flex-direction:column"><p>
	Reloadzeit des benachrichtigungseingang:
       <input type="number" value="${localStorage.getItem('reloaden_nach_millisekunden_benachrichtungen')}" id="reloadennaxhnachmillisekundenbenachrichtungen"></p>
   </label>
   <label style="display:flex;flex-direction:column"><p>
       Sound bei neue Benachrichtigung:
       <input type="checkbox" id="soundbenachrichtungen" ${checkboxerweiterungsoundaktiv}></p>
   </label>

   <label style="display:flex;flex-direction:column"><p>
   Sound auswahl mit Link
       <input type="text" value="${localStorage.getItem('sound_link_benachrichtungen')}" id="soundlinkbenachrichtungen"></p>
   </label>

   <small>Wenn das Feld bei Soundauswahl Link leer bleibt wird ein Standartton abgespielt,<br>
       Wenn Sie einen Link zur Sounddatei eingeben wird doeser dann abfespielt
   </small>
</label>`]);

if(!array_script){
	var array_script=[];
}
array_script.push([`
var benachrichtigungs_set_localstorage=["erweiterung_benachrichtigung_aktivieren",
"gesehene_benachtichtigung_color",
"nicht_gesehene_benachtichtigung_color",
"srollen_hoehe_in_px_benachrichtungen",
"reloaden_nach_millisekunden_benachrichtungen",
"sound_benachrichtungen",
"sound_link_benachrichtungen"];

var benachrichtigung_ids=["erweiterungbenachrichtigungaktivieren",
"gesehenebenachtichtigungcolor",
"nichtgesehenebenachtichtigungcolor",
"srollenhoeheinpxbenachrichtungen",
"reloadennaxhnachmillisekundenbenachrichtungen",
"soundbenachrichtungen",
"soundlinkbenachrichtungen"];

//console.log(benachrichtigung_ids,benachrichtigung_ids.length);
//console.log(benachrichtigungs_set_localstorage,benachrichtigungs_set_localstorage.length)
for(let benachrichtigungsplus=0;benachrichtigungsplus<=benachrichtigung_ids.length-1;benachrichtigungsplus++){

//console.log(benachrichtigungsplus,benachrichtigung_ids[benachrichtigungsplus]);
    var was_be_einstellung_var=document.getElementById(benachrichtigung_ids[benachrichtigungsplus]);
//    console.log(was_be_einstellung_var);
    was_be_einstellung_var.addEventListener('click',function(j,index){
//console.log(benachrichtigungs_set_localstorage,benachrichtigungsplus,j,index)
    if(j.target.type=='checkbox'){
	    if(j.target.checked==true){
		    localStorage.setItem(benachrichtigungs_set_localstorage[benachrichtigungsplus],true);
	    }else{
		    localStorage.setItem(benachrichtigungs_set_localstorage[benachrichtigungsplus],false);
	    }
     //   console.log(j.target.checked+' save')
    }else{
	    localStorage.setItem(benachrichtigungs_set_localstorage[benachrichtigungsplus],j.target.value);
     //   console.log(j.target.value+' save')
    }
    })
}
`]);
if(localStorage.getItem('erweiterung_benachrichtigung_aktivieren')){
    var be_func=benachrichtigungen_auslesen();
    if(be_func==1){
        console.log('%cBenachrichtigungen  aktiv: ' + (performance.now() - start1) + ' ms.','color:green');
    }else if(be_func==2){
        console.log('%cbenachrichtigungen deaktiviert: '+ (performance.now() - start1) + ' ms.','color:red');
    }else if(be_func==3){
        console.log('%cbenachrichtigungen functin error : '+ (performance.now() - start1) + ' ms.','color:red');
    }
}