NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Mini-posters // @namespace https://shikimori.me/ // @downloadURL https://openuserjs.org/install/flxemt/Mini-posters.user.js // @updateURL https://openuserjs.org/meta/flxemt/Mini-posters.meta.js // @version 1.0.2 // @description Mini-posters in users' lists // @author FLX // @match https://shikimori.me/* // @grant none // @license MIT // ==/UserScript== function loadMiniPosters() { if(!window.location.href.includes('/list/')) return; $(".l-content").on("postloader:success", () => { loadMiniPosters(); }); let additionalCSS = document.createElement('style'); document.head.appendChild(additionalCSS); additionalCSS.appendChild(document.createTextNode(`.p-user_rates-index .list-lines tr.editable, .p-user_rates-index .list-lines tr td { height: 46px; vertical-align: middle; } .b-table td { padding: 0; } .p-user_rates-index .list-lines tr .name a { margin-left: 50px; } .added-img { position: absolute; width: 32.56px; height: inherit; margin-top: -11px; } .p-user_rates-index .list-lines .selectable:hover { filter: none !important; transform: none !important; }`)); document.querySelectorAll('.user_rate.selectable').forEach((item, index) => { if (item.querySelector('.name .added-img') != null) return; let miniPoster = document.createElement('img'); let posterLink = item.querySelector('.name > a'); item.querySelector('.name').insertBefore(miniPoster, posterLink); miniPoster.classList = 'added-img'; let imageLink = posterLink.href.slice((posterLink.href.includes('/w') || posterLink.href.includes('/x') || posterLink.href.includes('/y') || posterLink.href.includes('/z')) ? posterLink.href.lastIndexOf('/') + 2 : posterLink.href.lastIndexOf('/') + 1, posterLink.href.length); miniPoster.onerror = () => { miniPoster.src = 'https://dere.shikimori.me/assets/globals/missing_preview.jpg'; }; miniPoster.src = (posterLink.href.includes('/animes/')) ? `https://desu.shikimori.me/system/animes/preview/${imageLink}.jpg` : `https://desu.shikimori.me/system/mangas/preview/${imageLink}.jpg`; if (posterLink.innerText.length > 85) posterLink.style.fontSize = '.5vw'; if (item.querySelector('.name .rate-text').hasChildNodes()) { item.querySelector('.name .rate-text div').style.marginTop = '30px'; changeCommentStyleVisibility(item, true); } }); // Reload additional styles after adding comment document.querySelectorAll('.user_rate.selectable.editable').forEach((item) => { item.addEventListener('click', () => { setTimeout(() => { document.querySelector('#submit_user_rate').addEventListener('click', e => { let targetElement = document.querySelector('.edit-form').previousSibling; if (document.querySelector('#user_rate_text').value.trim() == '') { changeCommentStyleVisibility(targetElement, false); } else { changeCommentStyleVisibility(targetElement, true); setTimeout(() => { targetElement.querySelector('.name .rate-text div').style.marginTop = '30px' }, 500); } }); }, 500); }); }); } function changeCommentStyleVisibility(targetElement, isVisible) { if (isVisible) { targetElement.querySelector('.added-img').style.marginTop = '0px'; targetElement.querySelector('.name > a').style.position = 'relative'; targetElement.querySelector('.name > a').style.top = '10px'; } else { targetElement.querySelector('.added-img').style.marginTop = ''; targetElement.querySelector('.name > a').style.position = ''; targetElement.querySelector('.name > a').style.top = ''; } } 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(loadMiniPosters);