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);