NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Shiki Highlighting // @author Chortowod (https://openuserjs.org/users/Chortowod/scripts) // @description Изменение цвета некоторых элементов (например, хронология и история) для наглядного понимания и лучшего(?) просмотра // @namespace http://shikimori.me/ // @version 2.0.2 // @match *://shikimori.org/* // @match *://shikimori.one/* // @match *://shikimori.me/* // @icon https://www.google.com/s2/favicons?domain=shikimori.me // @license MIT // @require https://gist.githubusercontent.com/arantius/3123124/raw/grant-none-shim.js // @updateURL https://openuserjs.org/meta/Chortowod/Shiki_Highlighting.meta.js // @downloadURL https://openuserjs.org/install/Chortowod/Shiki_Highlighting.user.js // @require https://gist.githubusercontent.com/Chortowod/814b010c68fc97e5f900df47bf79059c/raw/chtw_settings.js?v3 // @copyright 2023, Chortowod (https://openuserjs.org/users/Chortowod) // ==/UserScript== let settings = new ChtwSettings('chtwHighlight', '<a target="_blank" href="https://openuserjs.org/scripts/Chortowod/Shiki_Highlighting">Цвета тайтлов</a>'); let debug; function initSettings() { settings.createOption('isChronology', 'Хронология'); settings.createOption('isHistory', 'История'); settings.createOption('darkTheme', '', 'Переключить тему', 'submit', true); settings.setOption('isDarkTheme', false); // settings.createOption('defaultTr', 'Хронология [не в списке] кнопка', '#8f2929', 'color'); settings.createOption('completedBg', 'Хронология [просмотрено] фон', '#b4f5bf', 'color'); settings.createOption('completedTr', 'Хронология [просмотрено] кнопка', '#1aff42', 'color'); settings.createOption('plannedBg', 'Хронология [запланировано] фон', '#ffef7c', 'color'); settings.createOption('plannedTr', 'Хронология [запланировано] кнопка', '#ffc45a', 'color'); settings.createOption('onHoldBg', 'Хронология [отложено] фон', '#cfcfe9', 'color'); settings.createOption('onHoldTr', 'Хронология [отложено] кнопка', '#79bde7', 'color'); settings.createOption('watchingBg', 'Хронология [смотрю] фон', '#9bfbff', 'color'); settings.createOption('watchingTr', 'Хронология [смотрю] кнопка', '#00c5ff', 'color'); settings.createOption('droppedBg', 'Хронология [брошено] фон', '#e2e1e1', 'color'); settings.createOption('droppedTr', 'Хронология [брошено] кнопка', '#454545', 'color'); settings.createOption('rewatchingBg', 'Хронология [пересматриваю] фон', '#cae097', 'color'); settings.createOption('rewatchingTr', 'Хронология [пересматриваю] кнопка', '#a0c54b', 'color'); settings.createOption('added', 'История, добавлено', '#05b2ee', 'color'); settings.createOption('done', 'История, просмотрено', '#12d326', 'color'); settings.createOption('dropped', 'История, брошено', 'red', 'color'); settings.createOption('hold', 'История, отложено', '#ff7935', 'color'); // settings.createOption('watching', 'История, смотрю', '#34c34dfc', 'color'); settings.createOption('darkTheme', '', 'Переключить тему', 'submit', true); debug = settings.getOption('isDebug'); $('#'+settings.getOptionID('darkTheme')).on('click', function () { let textInfo = 'Цвета сброшены и переключены на '+(settings.getOption('isDarkTheme') ? 'светлую' : 'тёмную')+' тему. Перезагрузите страницу.'; if (settings.getOption('isDarkTheme')) { // settings.setOptionForced('defaultTr', '#8f2929'); settings.setOptionForced('completedBg', '#b4f5bf'); settings.setOptionForced('completedTr', '#1aff42'); settings.setOptionForced('plannedBg', '#ffef7c'); settings.setOptionForced('plannedTr', '#ffc45a'); settings.setOptionForced('onHoldBg', '#cfcfe9'); settings.setOptionForced('onHoldTr', '#79bde7'); settings.setOptionForced('watchingBg', '#9bfbff'); settings.setOptionForced('watchingTr', '#00c5ff'); settings.setOptionForced('droppedBg', '#e2e1e1'); settings.setOptionForced('droppedTr', '#454545'); settings.setOptionForced('rewatchingBg', '#cae097'); settings.setOptionForced('rewatchingTr', '#a0c54b'); settings.setOptionForced('added', '#05b2ee'); settings.setOptionForced('done', '#12d326'); settings.setOptionForced('dropped', 'red'); settings.setOptionForced('hold', '#ff7935'); } else { // settings.setOptionForced('defaultTr', '#8f2929'); settings.setOptionForced('completedBg', '#091d0c'); settings.setOptionForced('completedTr', '#34c34d'); settings.setOptionForced('plannedBg', '#252002'); settings.setOptionForced('plannedTr', '#986407'); settings.setOptionForced('onHoldBg', '#111038'); settings.setOptionForced('onHoldTr', '#2d2df4'); settings.setOptionForced('watchingBg', '#005458'); settings.setOptionForced('watchingTr', '#00c5ff'); settings.setOptionForced('droppedBg', '#2d2d2d'); settings.setOptionForced('droppedTr', '#111111'); settings.setOptionForced('rewatchingBg', '#384b0b'); settings.setOptionForced('rewatchingTr', '#698d16'); settings.setOptionForced('added', '#04f1ff'); settings.setOptionForced('done', '#b2ff00'); settings.setOptionForced('dropped', '#ff2020'); settings.setOptionForced('hold', '#eb560b'); } settings.setOptionForced('isDarkTheme', !settings.getOption('isDarkTheme')); alert(textInfo); }); } function log (message) { debug&&console.log(message) } // собственная подсветка тайтлов для наглядности function hlChronology() { if (!settings.getOption('isChronology')) return; let trigger = '.b-db_entry-variant-list_item > .info > .user_rate-container > .b-user_rate .b-add_to_list'; let parent = '.b-db_entry-variant-list_item'; let bc = 'background-color'; // $('.b-add_to_list.planned .trigger').css(bc, settings.getOption('defaultTr')); $(trigger + ' .trigger').css({'margin-bottom':'6px', 'border':'none', 'border-radius':'5px'}); $(parent).css({'margin-bottom':'0px', 'border-radius':'18px'}); $(trigger + '.completed').parents(parent).css(bc, settings.getOption('completedBg')); $(trigger + '.completed .trigger').css(bc, settings.getOption('completedTr')); $(trigger + '.planned .edit-trigger').parents(parent).css(bc, settings.getOption('plannedBg')); $(trigger + '.planned .trigger').css(bc, settings.getOption('plannedTr')); $(trigger + '.on_hold .edit-trigger').parents(parent).css(bc, settings.getOption('onHoldBg')); $(trigger + '.on_hold .trigger').css(bc, settings.getOption('onHoldTr')); $(trigger + '.watching .edit-trigger').parents(parent).css(bc, settings.getOption('watchingBg')); $(trigger + '.watching .trigger').css(bc, settings.getOption('watchingTr')); $(trigger + '.dropped .edit-trigger').parents(parent).css(bc, settings.getOption('droppedBg')); $(trigger + '.dropped .trigger').css(bc, settings.getOption('droppedTr')); $(trigger + '.rewatching .edit-trigger').parents(parent).css(bc, settings.getOption('rewatchingBg')); $(trigger + '.rewatching .trigger').css(bc, settings.getOption('rewatchingTr')); } function hlHistory() { if (!$('.history-page').length || !settings.getOption('isHistory')) return; // $(".history-page span").children().children().css("color", settings.getOption('watching')); $(".history-page span:contains('добавлено в список')").children().css("color", settings.getOption('added')); $(".history-page span:contains('запланировано')").children().css("color", settings.getOption('added')); $(".history-page span:contains('просмотрено'):not(:contains('эпиз'))").children().css("color", settings.getOption('done')); $(".history-page span:contains('прочитано и оценено')").children().css("color", settings.getOption('done')); $(".history-page span:contains('удалено')").children().css("color", settings.getOption('dropped')); $(".history-page span:contains('брошено')").children().css("color", settings.getOption('dropped')); $(".history-page span:contains('отложено')").children().css("color", settings.getOption('hold')); $('.history-page .b-user_history-line > span > *').css('font-weight', 'bold'); } function ready(fn) { document.addEventListener('page:load', fn); document.addEventListener('turbolinks:load', fn); if (document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading") fn(); else document.addEventListener('DOMContentLoaded', fn); } 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'), hlHistory); ready(initSettings); ready(hlChronology); ready(hlHistory);