NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name CustomListMark // @version 0.2 // @description Заменяет "Онгоинг" и "Анонс" в списке аниме и манги на индикаторы. Отдельно помечает онгоинги, в которых у пользоваля замечено отставание по сериям // @author AniOleg // @match https://shikimori.one/* // @match https://shikimori.org/* // @match https://shikimori.me/* // @match http://shikimori.one/* // @match http://shikimori.org/* // @match http://shikimori.me/* // @icon https://www.google.com/s2/favicons?domain=shikimori.one // @homepageURL https://openuserjs.org/scripts/AniOleg/CustomListMark // @updateURL https://openuserjs.org/meta/AniOleg/CustomListMark.meta.js // @license MIT // @grant none // ==/UserScript== //Цвета (поддерживаются также HEX и RGB(R, G, B)) var clOngoing='GreenYellow'; //онгоинг var clOngoingLaze='red'; //онгоинг, есть отставание по сериям var clAnnounce='orange'; //анонс function cReDraw (){ if (location.pathname.includes('/list/anime') || location.pathname.includes('/list/manga')) try{ var EntriesList = document.getElementsByClassName('entries'); for (var a = 0; a<EntriesList.length; a++){ for (var b = 0; b<EntriesList[a].childNodes.length; b++){ if (EntriesList[a].childNodes[b].childNodes[1].getElementsByClassName('ongoing').length>0) { //Найден "Онгоинг" EntriesList[a].childNodes[b].childNodes[1].getElementsByClassName('ongoing')[0].remove(); if (EntriesList[a].childNodes[b].childNodes[3].getElementsByClassName('misc-value')[0].childNodes[1].nodeValue - EntriesList[a].childNodes[b].childNodes[3].getElementsByClassName('current-value')[0].childNodes[0].childNodes[0].nodeValue<=0 || EntriesList[a].childNodes[b].childNodes[3].getElementsByClassName('misc-value')[0].childNodes[1].nodeValue=='?' ) MarkTitle(clOngoing, EntriesList, a, b); else MarkTitle(clOngoingLaze, EntriesList, a, b); } else if (EntriesList[a].childNodes[b].childNodes[1].getElementsByClassName('anons').length>0) { //Найден "Анонс" EntriesList[a].childNodes[b].childNodes[1].getElementsByClassName('anons')[0].remove(); MarkTitle(clAnnounce, EntriesList, a, b); } } } } catch{} } function MarkTitle(sColor, EntriesList, a, b){ EntriesList[a].childNodes[b].childNodes[0].style.borderLeft='1px solid '+sColor; } //Прослушка страницы (и подгрузки) var observeDOM = (function(){ var MutationObserver = window.MutationObserver || window.WebKitMutationObserver; var eventListenerSupported = window.addEventListener; return function(obj, callback){ if(MutationObserver){ // define a new observer var obs = new MutationObserver(function(mutations, observer){ if(mutations[0].addedNodes.length || mutations[0].removedNodes.length) callback(); }); // have the observer observe foo for changes in children obs.observe(obj, { childList: true, subtree: true }); } else if(eventListenerSupported){ obj.addEventListener('DOMNodeInserted', callback, false); //obj.addEventListener('DOMNodeRemoved', callback, false); } }; })(); observeDOM(document.querySelector('html'), cReDraw);