NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Shiki Fav Star // @author Chortowod (https://openuserjs.org/scripts/Chortowod) // @namespace http://shikimori.one/ // @version 1.3.6 // @description Показывает сердечко под именем перса, по нажатию на которое открывается окно с редактированием профиля и копируется в буфер обмена ID перса (с запятой перед); также копирует ID по нажатию на аватарку перса // @author Chortowod // @match http://shikimori.org/* // @match https://shikimori.org/* // @match http://shikimori.one/* // @match https://shikimori.one/* // @match http://shikimori.me/* // @match https://shikimori.me/* // @license MIT // @grant none // @copyright 2023, Chortowod // @require https://gist.githubusercontent.com/arantius/3123124/raw/grant-none-shim.js // @updateURL https://openuserjs.org/meta/Chortowod/Shiki_Fav_Star.meta.js // @downloadURL https://openuserjs.org/install/Chortowod/Shiki_Fav_Star.user.js // ==/UserScript== // проверяем, находимся ли мы на странице с персами function CheckCharacters() { if (location.href.includes("characters")) myFavStar(); } function myFavStar() { // если элементы уже созданы, то привязываем событие клика // (а то оно исчезает, если посмотреть арты, например, и вернуться обратно) // и скипаем функцию if (document.getElementById('my-fav')) { document.getElementById('my-fav').addEventListener ("click", clickToCopyAndOpen); document.getElementById('copy-my').addEventListener ("click", clickToCopy); return; } // копировать ID по клику на картинке перса var copy = document.querySelector(".c-image"); if (!copy) { console.log('Shiki Fav Star: скрипт не работает на побочных страницах персонажа.'); return; } copy.setAttribute('id', 'copy-my'); copy.addEventListener ("click", clickToCopy); // создать "сердечко" var newFav = document.createElement("a"); newFav.id = 'my-fav'; newFav.classList.add("b-subposter-action", "edit"); //newFav.textContent = "❤"; newFav.title = "Добавить в гарем"; // прилепить "сердечко" справа от имени перса var rateContainer = document.querySelector(".b-subposter-actions"); rateContainer.appendChild(newFav); // добавитьб функцию по клику мыши newFav.addEventListener ("click", clickToCopyAndOpen); } function clickToCopyAndOpen() { var dummy = document.createElement("textarea"); //элемент для манипулирования с копированием document.body.appendChild(dummy); var favN = location.href; //скопировать в переменную текущую адресную строку favN = favN.substring(32, favN.indexOf('-')); //обрезать строку от 32 символа до "-", т.е. оставить только ID перса dummy.value = "," + favN; // добавить запятую для облегченной вставки dummy.select(); document.execCommand("copy"); var redirectTo = document.getElementsByClassName('submenu-triangle')[1].getAttribute("href") + "/edit/profile"; window.open(redirectTo, "_self"); } function clickToCopy() { var dummy = document.createElement("textarea"); //элемент для манипулирования с копированием document.body.appendChild(dummy); var favN = location.href; //скопировать в переменную текущую адресную строку favN = favN.substring(32, favN.indexOf('-')); //обрезать строку от 32 символа до "-", т.е. оставить только ID перса dummy.value = favN; dummy.select(); document.execCommand("copy"); document.body.removeChild(dummy); } 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); } ready(CheckCharacters); GM_addStyle(` #my-fav:hover { cursor: pointer; } #my-fav:before { content: '❤'; font-size: 20px; } `);