// ==UserScript== // @name Aniscripts // @namespace http://tampermonkey.net/ // @version 3.25 // @description Change stuff on Anilist.co // @author hoh // @match https://anilist.co/* // @grant none // @downloadURL none // ==/UserScript== (function(){ scriptVersion = "3.25"; /* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License (not provided) along with this program. If not, see . */ /* Aniscripts, sometimes just "the userscript", is modular and contains of several independet functions The URL matching controller can be found near the bottom of this file. Due to the dynamic nature of how Anilist pages load, these functions are run on a clock. Functionallity provided by all of these functions are suplemental, so the clock frequenzies are kept slow to not impact performance. */ //a shared style node for all the modules. All classes are prefixed by "hoh" to avoid collisions with native Anilist classes var style = document.createElement('style'); style.type = 'text/css'; //most of these are used by the notification module //The default colour is rgb(var(--color-blue)) provided by Anilist, but rgb(var(--color-green)) is preferred for things related to manga style.innerHTML = ` .hohTime{ position : static; float : right; margin-right : 20px; margin-top : 10px; margin-left: auto; } .hohUnread{ border-right : 8px; border-color: rgba(var(--color-blue)); border-right-style : solid; } .hohNotification{ margin-bottom : 10px; background : rgb(var(--color-foreground)); border-radius : 4px; justify-content: space-between; line-height: 0; min-height: 72px; } .hohNotification *{ line-height: 1.15; } .hohUserImageSmall{ display : inline-block; background-position : 50%; background-repeat : no-repeat; background-size : cover; position : absolute; } .hohUserImage{ height : 72px; width : 72px; display : inline-block; background-position : 50%; background-repeat : no-repeat; background-size : cover; position:absolute; } .hohMediaImage{ height : 70px; margin-right : 5px; } .hohMessageText{ position : absolute; margin-top : 30px; margin-left : 80px; max-width : 330px; } .hohMediaImageContainer{ vertical-align : bottom; margin-left : 400px; display : inline; position: relative; display: inline-block; min-height: 70px; } .hohMediaImageContainer > a{ height: 70px; line-height: 0!important; } span.hohMediaImageContainer{ line-height: 0!important; } .hohCommentsContainer{ margin-top: 5px; } .hohCommentsArea{ margin : 10px; display : none; padding-bottom : 2px; margin-top: 5px; width: 95%; } .hohComments{ float : right; display : none; margin-top: -30px; margin-right: 15px; cursor : pointer; margin-left: 600px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .hohCombined .hohComments{ display : none!important; } .hohQuickCom{ padding : 5px; background-color : rgb(var(--color-background)); margin-bottom : 5px; position: relative; } .hohQuickComName{ margin-right : 15px; color : rgb(var(--color-blue)); } .hohQuickComName::after{ content : ":"; } .hohQuickComContent{ margin-right: 40px; display: block; } .hohQuickComContent > p{ margin: 1px; } .hohQuickComLikes{ position: absolute; right: 5px; bottom: 5px; display: inline-block; } .hohQuickComContent img { max-width:100%; } .hohSpoiler::before{ color : rgb(var(--color-blue)); cursor : pointer; background : rgb(var(--color-background)); border-radius : 3px; content : "Spoiler, click to view"; font-size : 1.3rem; padding : 0 5px; } .hohSpoiler.hohClicked::before{ display : none; } .hohSpoiler > span{ display : none; } .hohMessageText > span > div.time{ display : none; } .hohUnhandledSpecial > div{ margin-top : -20px; } .hohMonospace{ font-family: monospace; } .hohSocialTabActivityCompressedContainer{ min-width:480px; } .hohSocialTabActivityCompressedStatus{ vertical-align: middle; padding-bottom: 7px; } .hohSocialTabActivityCompressedName{ vertical-align: middle; margin-left: 3px; } .hohForumHider{ margin-right: 3px; cursor: pointer; font-family: monospace; } .hohForumHider:hover{ color: rgb(var(--color-blue)); } .hohBackgroundCover{ height: 70px; width: 50px; display: inline-block; background-repeat: no-repeat; background-size: cover; margin-top: 1px; line-height: 0; margin-bottom: 1px; } #hohDescription{ width: 280px; height: 150px; float: left; color: rgb(var(--color-blue)); } .hohStatsTrigger{ cursor: pointer; border-radius: 3px; color: rgb(var(--color-text-lighter)); display: block; font-size: 1.4rem; margin-bottom: 8px; padding: 5px 10px; } .hohActive{ background: rgba(var(--color-foreground),.8); color: rgb(var(--color-text)); font-weight: 500; } #hohFavCount{ position: absolute; right: 30px; color: rgba(var(--color-red)); top: 10px; font-weight: 400; } .hohShamelessLink{ display: block; margin-bottom: 5px; } .hohSlidePlayer{ display: block; position: relative; width: 500px; } .hohSlide{ position: absolute; top: 0px; font-size: 500%; height: 100%; display: flex; align-items: center; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; opacity:0.5; } .hohSlide:hover{ background-color: rgb(0,0,0,0.4); cursor: pointer; opacity:1; } .hohRightSlide{ right: 0px; padding-left: 10px; padding-right: 20px; } .hohLeftSlide{ left: 0px; padding-left: 20px; padding-right: 10px; } .hohShare{ position: absolute; right: 12px; top: 30px; cursor: pointer; color: rgb(var(--color-blue-dim)); } .activity-entry{ position: relative; } .hohEmbed{ border-style: solid; border-color: rgb(var(--color-text)); border-width: 1px; padding: 15px; position: relative; } .hohEmbed .avatar{ border-radius: 3px; height: 40px; width: 40px; background-position: 50%; background-repeat: no-repeat; background-size: cover; display: inline-block; } .hohEmbed .name{ display: inline-block; height: 40px; line-height: 40px; vertical-align: top; color: rgb(var(--color-blue)); font-size: 1.4rem; margin-left: 12px !important; } .hohEmbed .time{ color: rgb(var(--color-text-lighter)); font-size: 1.1rem; position: absolute; right: 12px; top: 12px; } .hohRecsLabel{ color: rgb(var(--color-blue)) !important; } .hohRecsItem{ margin-top: 5px; margin-bottom: 10px; } .hohTaglessLinkException{ display: block; } .hohTaglessLinkException::after{ content: ""!important; } .hohStatValue{ color: rgb(var(--color-blue)); } .markdown-editor > [title="Image"], .markdown-editor > [title="Youtube Video"], .markdown-editor > [title="WebM Video"]{ color: rgba(var(--color-red)); } .hohBackgroundUserCover{ height: 70px; width: 70px; display: inline-block; background-position: 50%; background-repeat: no-repeat; background-size: cover; margin-top: 1px; margin-bottom: 1px; } .history-day.lv-9{ z-index:1!important } `; document.getElementsByTagName('head')[0].appendChild(style); //Todo: find out how to parse API headers for an accurate result document.APIcallsUsed = 0;//this is NOT a reliable way to figure out how many more calls we can use, just a way to set some limit var pending = {}; var APIcounter = setTimeout(function(){ document.APIcallsUsed = 0; },60*1000);//reset counter every minute function lsTest(){//localStorage is great for not having to fetch the api data every time var test = "test"; try{ localStorage.setItem(test,test); localStorage.removeItem(test); return true; } catch(e){ return false; } }; if(lsTest() === true){ var localStorageAvailable = true; var aniscriptsUsed = localStorage.getItem("aniscriptsUsed"); if(aniscriptsUsed === null){ aniscriptsUsed = { keys : [] }; } else{ aniscriptsUsed = JSON.parse(aniscriptsUsed); }; localStorage.setItem("aniscriptsUsed",JSON.stringify(aniscriptsUsed)); } else{ var localStorageAvailable = false; }; useScripts = {//most modules are turned on by default notifications : true, socialTab : true, forumComments : true, staffPages : true, tagDescriptions : true, completedScore : true, moreStats : true, characterFavouriteCount : true, CSSfavs : true, CSScompactBrowse : true, CSSmangaGreen: false, CSSfollowCounter: true, CSSsubmissionCounter: false, CSSprofileClutter: false, CSSdecimalPoint: false, CSSverticalNav: false, hideLikes: false, dubMarker: false, CSSstudioStats: true, CSSsmileyScore: true }; var forceRebuildFlag = false; if(localStorageAvailable){ var localStorageItem = localStorage.getItem("hohSettings"); if(localStorageItem != null && localStorageItem != ""){ var useScriptsSettings = JSON.parse(localStorageItem); for(key in useScriptsSettings){//this is to keep the default settings if the version in local storage is outdated useScripts[key] = useScriptsSettings[key]; }; }; localStorage.setItem("hohSettings",JSON.stringify(useScripts)); }; try{//looks at the nav var whoAmI = document.getElementById("nav").children[0].children[1].children[1].href.match(/[a-zA-Z0-9-]*\/$/)[0].slice(0,-1); } catch(err){ var whoAmI = ""; };//use later for some scripts Element.prototype.remove = function(){//more comfy way to remove DOM elements this.parentElement.removeChild(this); } NodeList.prototype.remove = HTMLCollection.prototype.remove = function() { for(var i = this.length - 1; i >= 0; i--) { if(this[i] && this[i].parentElement) { this[i].parentElement.removeChild(this[i]); } } }; var svgAssets = { likeIcon : "", envelope : "✉", replyIcon : "", frown : "", meh : "", smile : "", star : "" }; var moreStyle = document.createElement('style'); moreStyle.type = 'text/css'; if(localStorageAvailable){ var localStorageItem = localStorage.getItem("titleAliases"); if(localStorageItem != null && localStorageItem != ""){ var titleAliases = JSON.parse(localStorageItem); for(var i=0;i div > .wrap > div, .favourites > div > .wrap > a{ /*make the spaces in the grid even*/ margin-bottom: 0px!important; margin-right: 0px!important; column-gap: 10px!important; } .user .overview{ grid-template-columns: 460px auto!important; } .favourites > div > .wrap{ padding: 0px!important; display: grid; grid-gap: 10px; column-gap: 10px!important; grid-template-columns: repeat(auto-fill,85px); grid-template-rows: repeat(auto-fill,115px); background: rgb(0,0,0,0) !important; width: 470px; } .favourite.studio{ cursor: pointer; min-height: 115px; font-size: 15px; display: grid; grid-gap: 10px; padding: 2px!important; padding-top: 8px!important; background-color: rgba(var(--color-foreground))!important; text-align: center; align-content: center; } .site-theme-dark .favourite.studio{ background-color: rgb(49,56,68)!important; } .favourite.studio::after{ display: inline-block; background-repeat: no-repeat; content:""; margin-left:5px; background-size: 76px 19px; width: 76px; height: 19px; } /*adds a logo to most favourite studio entries. Add more if needed */ .favourite.studio[href="/studio/11/MADHOUSE"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Madhouse_studio_logo.svg/300px-Madhouse_studio_logo.svg.png"); } .favourite.studio[href="/studio/4/BONES"]::after{ background-image: url("https://i.stack.imgur.com/7pRQn.png"); } .favourite.studio[href="/studio/14/Sunrise"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/8/8c/Sunrise_company_logo.svg/220px-Sunrise_company_logo.svg.png"); } .favourite.studio[href="/studio/32/Manglobe"]::after{ background-image: url("https://i.stack.imgur.com/alV3I.gif"); } .favourite.studio[href="/studio/287/David-Production"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/7/75/David_production.jpg/220px-David_production.jpg"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/6/Gainax"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/a/a8/Gainax_logo.svg/220px-Gainax_logo.svg.png"); } .favourite.studio[href="/studio/150/Sanrio"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/4/41/Sanrio_logo.svg/220px-Sanrio_logo.svg.png"); } .favourite.studio[href="/studio/18/Toei-Animation"]::after{ background-image: url("https://i.stack.imgur.com/AjzVI.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/34/Hal-Film-Maker"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/0/09/Hal_film_maker_logo.gif/220px-Hal_film_maker_logo.gif"); } .favourite.studio[href="/studio/68/Mushi-Productions"]::after{ background-image: url("https://i.stack.imgur.com/HmYdT.jpg"); } .favourite.studio[href="/studio/21/Studio-Ghibli"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Studio_Ghibli_logo.svg/220px-Studio_Ghibli_logo.svg.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/13/Studio-4C"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/e/ec/Studio_4C_logo.png"); } .favourite.studio[href="/studio/2/Kyoto-Animation"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/b/bf/Kyoto_Animation_logo.svg/250px-Kyoto_Animation_logo.svg.png"); } .favourite.studio[href="/studio/44/Shaft"]::after{ background-image: url("https://i.stack.imgur.com/tuqhK.png"); } .favourite.studio[href="/studio/803/Trigger"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Trigger_Logo.svg/220px-Trigger_Logo.svg.png"); } .favourite.studio[href="/studio/7/JC-Staff"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/f/f5/J.C.Staff_Logo.svg/220px-J.C.Staff_Logo.svg.png"); } .favourite.studio[href="/studio/102/FUNimation-Entertainment"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Funimation_2016.svg/320px-Funimation_2016.svg.png"); background-size: 76px 15px; height: 15px; width: 76px; } .favourite.studio[href="/studio/132/PA-Works"]::after{ background-image: url("https://i.stack.imgur.com/7kjSn.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/6145/Science-SARU"]::after{ background-image: url("https://i.stack.imgur.com/zo9Fx.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/22/Nippon-Animation"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/b/b4/Nippon.png/200px-Nippon.png"); } .favourite.studio[href="/studio/73/TMS-Entertainment"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/b/b9/TMS_Entertainment_logo.svg/220px-TMS_Entertainment_logo.svg.png"); } .favourite.studio[href="/studio/65/Tokyo-Movie-Shinsha"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/2/22/Tokyo_Movie_Shinsha.png"); } .favourite.studio[href="/studio/8/Artland"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/a/ae/Artland_logo.gif/200px-Artland_logo.gif"); } .favourite.studio[href="/studio/569/MAPPA"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/0/06/MAPPA_Logo.svg/220px-MAPPA_Logo.svg.png"); } .favourite.studio[href="/studio/314/White-Fox"]::after{ background-image: url("https://i.stack.imgur.com/lwG1T.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/10/Production-IG"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/5/5a/Production_I.G_Logo.svg/250px-Production_I.G_Logo.svg.png"); } .favourite.studio[href="/studio/112/Brains-Base"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/0/00/Brain%27s_Base_logo.png/200px-Brain%27s_Base_logo.png"); } .favourite.studio[href="/studio/561/A1-Pictures"]::after{ background-image: url("https://i.stack.imgur.com/nBUYo.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/43/ufotable"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/5/56/Ufotable-Logo.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/858/Wit-Studio"]::after{ background-image: url("https://i.stack.imgur.com/o3Rro.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/47/Studio-Khara"]::after{ background-image: url("https://i.stack.imgur.com/2d1TT.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/1/Studio-Pierrot"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/1/10/Studio_Pierrot.jpg/220px-Studio_Pierrot.jpg"); } .favourite.studio[href="/studio/436/AIC-Build"]::after, .favourite.studio[href="/studio/48/AIC"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/6/6b/AIC_logo.png/220px-AIC_logo.png"); } .favourite.studio[href="/studio/3/GONZO"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/8/85/Gonzo_company.png/220px-Gonzo_company.png"); } .favourite.studio[href="/studio/300/SILVER-LINK"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/3/3d/Silver_Link_Logo.svg/220px-Silver_Link_Logo.svg.png"); } .favourite.studio[href="/studio/456/Lerche"]::after{ background-image: url("https://i.stack.imgur.com/gRQPc.png"); } .favourite.studio[href="/studio/291/CoMix-Wave"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Cwflogo.png/150px-Cwflogo.png"); } .favourite.studio[href="/studio/95/Doga-Kobo"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/a/a8/Doga_Kobo_Logo.svg/220px-Doga_Kobo_Logo.svg.png"); } .favourite.studio[href="/studio/290/Kinema-Citrus"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/c/c0/Kinema_Citrus_logo.png"); background-size: 76px 25px; height: 25px; width: 76px; } .favourite.studio[href="/studio/333/TYO-Animations"]::after{ background-image: url("https://i.stack.imgur.com/KRqAp.jpg"); background-size: 76px 25px; height: 25px; width: 76px; } .favourite.studio[href="/studio/41/Satelight"]::after{ background-image: url("https://i.stack.imgur.com/qZVQg.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/6069/Studio-3Hz"]::after{ background-image: url("https://i.stack.imgur.com/eD0oe.jpg"); } .favourite.studio[href="/studio/911/Passione"]::after{ background-image: url("https://i.stack.imgur.com/YyEGg.jpg"); } .favourite.studio[href="/studio/418/Studio-Gokumi"]::after{ background-image: url("https://i.stack.imgur.com/w1y22.png"); } .favourite.studio[href="/studio/51/diomeda"]::after{ background-image: url("https://i.stack.imgur.com/ZHt3T.jpg"); } .favourite.studio[href="/studio/91/feel"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/0/07/Feel_%28company%29_logo.png/220px-Feel_%28company%29_logo.png"); background-size: 76px 25px; height: 25px; width: 76px; } .favourite.studio[href="/studio/36/Studio-Gallop"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/3/37/Studio_Gallop.png"); } .favourite.studio[href="/studio/537/SANZIGEN"]::after{ background-image: url("https://i.stack.imgur.com/CkuqH.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/35/Seven-Arcs"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/a/ac/Seven_Arcs_logo.png"); background-size: 76px 25px; height: 25px; width: 76px; } .favourite.studio[href="/studio/6222/CloverWorks"]::after{ background-image: url("https://i.stack.imgur.com/9Fvr7.jpg"); } .favourite.studio[href="/studio/144/Pony-Canyon"]::after{ background-image: url("https://i.stack.imgur.com/9kkew.png"); } .favourite.studio[href="/studio/493/Aniplex-of-America"]::after, .favourite.studio[href="/studio/17/Aniplex"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/3/37/Aniplex_logo.svg/220px-Aniplex_logo.svg.png"); } .favourite.studio[href="/studio/555/Studio-Chizu"]::after{ background-image: url("http://www.studio-chizu.jp/images/logo.gif"); } .favourite.studio[href="/studio/37/Studio-DEEN"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/Studio_Deen_logo.svg/220px-Studio_Deen_logo.svg.png"); } .favourite.studio[href="/studio/159/Kodansha"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Kodansha.png/200px-Kodansha.png"); } .favourite.studio[href="/studio/437/Kamikaze-Douga"]::after{ background-image: url("https://img7.anidb.net/pics/anime/178777.jpg"); } .favourite.studio[href="/studio/459/Nitroplus"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/0/09/Nitroplus_logo.png/220px-Nitroplus_logo.png"); } .favourite.studio[href="/studio/166/Movic"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/f/f3/Movic_logo.png"); } .favourite.studio[href="/studio/38/Arms"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/f/f4/Arms_Corporation.png/200px-Arms_Corporation.png"); } .favourite.studio[href="/studio/247/ShinEi-Animation"]::after{ background-image: url("https://i.stack.imgur.com/b2lcL.png"); } .favourite.studio[href="/studio/6235/SEK-Studio"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Flag_of_North_Korea.svg/125px-Flag_of_North_Korea.svg.png"); background-size: 74px 25px; height: 25px; width: 74px; } .favourite.studio[href="/studio/58/Square-Enix"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/a/af/Square_Enix_logo.svg/230px-Square_Enix_logo.svg.png"); } .favourite.studio[href="/studio/503/Nintendo-Co-Ltd"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/0/0d/Nintendo.svg/220px-Nintendo.svg.png"); } .favourite.studio[href="/studio/167/Sega"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/6/63/Sega_logo.svg/200px-Sega_logo.svg.png"); } .favourite.studio[href="/studio/193/Idea-Factory"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/e/eb/Idea_factory.gif"); } .favourite.studio[href="/studio/6077/Orange"]::after{ background-image: url("http://www.orange-cg.com/img/common/logo.gif"); } .favourite.studio[href="/studio/309/GoHands"]::after{ background-image: url("https://i.stack.imgur.com/pScIZ.jpg"); } .favourite.studio[href="/studio/104/Lantis"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/3/39/Lantis_logo.png"); } .favourite.studio[href="/studio/6071/Studio-Shuka"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/f/fa/Shuka_studio.jpg"); } .favourite.studio[href="/studio/53/Dentsu"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/1/10/Dentsu_logo.svg/200px-Dentsu_logo.svg.png"); } .favourite.studio[href="/studio/143/Mainichi-Broadcasting"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/Mainichi_Broadcasting_System_logo.svg/200px-Mainichi_Broadcasting_System_logo.svg.png"); } .favourite.studio[href="/studio/376/Sentai-Filmworks"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/Sentai_Filmworks_Official_Logo.jpg/220px-Sentai_Filmworks_Official_Logo.jpg"); } .favourite.studio[href="/studio/681/ASCII-Media-Works"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/f/f5/ASCII_Media_Works_logo.svg/220px-ASCII_Media_Works_logo.svg.png"); } .favourite.studio[href="/studio/334/Ordet"]::after{ background-image: url("https://i.stack.imgur.com/evr12.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/238/ATX"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/c/c6/AT-X_logo.svg/150px-AT-X_logo.svg.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/66/Key"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/1/1f/Key_Visual_Arts_Logo.svg/167px-Key_Visual_Arts_Logo.svg.png"); background-size: 76px 30px; height: 30px; width: 76px; } .favourite.studio[href="/studio/145/TBS"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/f/f8/TBS_logo.svg/200px-TBS_logo.svg.png"); } .favourite.studio[href="/studio/108/Media-Factory"]::after{ background-image: url("https://i.stack.imgur.com/rR7yU.png"); background-size: 76px 25px; height: 25px; width: 76px; } .favourite.studio[href="/studio/346/Hoods-Entertainment"]::after{ background-image: url("https://i.stack.imgur.com/p7S0I.png"); } .favourite.studio[href="/studio/6142/Geno-Studio"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/thumb/f/f4/Genostudio.jpg/220px-Genostudio.jpg"); height: 25px; } .favourite.studio[href="/studio/113/Kadokawa-Shoten"], .favourite.studio[href="/studio/262/Kadokawa-Pictures-USA"], .favourite.studio[href="/studio/352/Kadokawa-Pictures-Japan"]::after{ background-image: url("https://i.stack.imgur.com/ZsUDR.gif"); } .favourite.studio[href="/studio/4418/8bit"]::after{ background-image: url("https://upload.wikimedia.org/wikipedia/en/e/ea/8-Bit_Animation_Studio.png"); } `; }; if(useScripts.CSScompactBrowse){ moreStyle.innerHTML += ` .search-page-unscoped.container{ padding-left: 10px; padding-right: 0px; } .search-page-unscoped .description{ display:none; } body,.search-page-unscoped .preview-section{ counter-reset: ranking; } .search-page-unscoped .data::before { left:2px; opacity:0.4; font-size:70%; position:absolute; counter-increment: ranking; content: counter(ranking); } .search-page-unscoped .media-card{ min-width:150px!important; grid-template-columns: 150px auto!important; height: 297px!important; width: 150px !important; } .search-page-unscoped .cover .overlay{ padding-left:8px!important; padding-right:8px!important; padding-top:4px!important; } .search-page-unscoped .grid-wrap > .media-card{ margin-left:30px; } .search-page-unscoped .media-card .cover{ width:150px; height:215px; margin-top:53px; z-index: 100; } .search-page-unscoped .data{ margin-left: -150px; } .search-page-unscoped .genres{ min-height:29px; z-index: 101; padding: 8px 5px!important; padding-bottom: 2px !important; font-size: 1rem!important; } .search-page-unscoped .list-edit{ z-index: 101; } .search-page-unscoped .airing-countdown{ padding: 5px!important; } .search-page-unscoped .grid-wrap{ grid-template-columns: repeat(auto-fill, 150px) !important; } .search-page-unscoped .media{ grid-template-columns: repeat(auto-fill, 150px) !important; width:100%; } .search-page-unscoped .overlay .studio{ margin-top: 2px!important; margin-bottom: -8px!important; } .search-page-unscoped .list-status{ width: 20px!important; height: 20px!important; } .search-page-unscoped .media-card:nth-child(5){ display: inline-grid!important; } `; }; if(useScripts.CSSsubmissionCounter){ moreStyle.innerHTML += ` .submissions-wrap{ counter-reset: acceptedCount partialCount pendingCount rejectedCount; } .submissions-wrap .submission .status.accepted{ counter-increment: acceptedCount; } .submissions-wrap .submission .status.accepted::after{ content: counter(acceptedCount); } .submissions-wrap .submission .status.pending{ counter-increment: pendingCount; } .submissions-wrap .submission .status.pending::after{ content: counter(pendingCount); } .submissions-wrap .submission .status.partially_accepted{ counter-increment: partialCount; } .submissions-wrap .submission .status.partially_accepted::after{ content: counter(partialCount); } .submissions-wrap .submission .status.rejected{ counter-increment: rejectedCount; } .submissions-wrap .submission .status.rejected::after{ content: counter(rejectedCount); } .submissions-wrap::after{ content: "pending: " counter(pendingCount) ", accepted: " counter(acceptedCount) ", partially accepted: " counter(partialCount) ", rejected: " counter(rejectedCount); } `; }; if(useScripts.CSSprofileClutter){ moreStyle.innerHTML += ` .overview .list-stats > .footer{ display: none; } .overview > .section > .desktop:nth-child(2){ display: none; } .overview > .section > .desktop:nth-child(3){ display: none; } .overview > .section > .desktop.favourites{ display: inherit; } `; }; if(useScripts.CSSfollowCounter){ moreStyle.innerHTML += ` .user-social .user-follow > div.wrap{ grid-template-columns: repeat(auto-fill,75px)!important; grid-template-rows: repeat(auto-fill,75px)!important; } body{ counter-reset: followCount; } .user-social .user-follow .user{ counter-increment: followCount; } .user-social .user-follow .user:nth-child(10n), .user-social .user-follow .user:last-child{ overflow: visible!important; } .user-social .user-follow .user:last-child::after{ content: "Total: " counter(followCount); position: relative; left: 85px; top: -48px; opacity: 0.5; } `; }; if(useScripts.CSSgreenManga){ moreStyle.innerHTML += ` .activity-manga_list > div > div > div > div > .title{ color: rgba(var(--color-green))!important; } .media .relations .cover[href^="/manga/"] + div div{ color: rgba(var(--color-green)); } .media .relations .cover[href^="/anime/"] + div div{ color: rgba(var(--color-blue)); } .media .relations .cover[href^="/manga/"]{ border-bottom-style: solid; border-bottom-color: rgba(var(--color-green)); border-bottom-width: 2px; } .media .relations.small .cover[href^="/manga/"]::after{ position:absolute; left:1px; bottom:3px; content:""; border-style: solid; border-color: rgba(var(--color-green)); border-width: 2px; } .media .relations .cover[href^="/anime/"]{ border-bottom-style: solid; border-bottom-color: rgba(var(--color-blue)); border-bottom-width: 2px; } .media .relations .cover div.image-text{ margin-bottom: 2px!important; border-radius: 0px!important; padding-bottom: 8px!important; padding-top: 8px!important; font-weight: 500!important; } `; }; if(useScripts.CSSverticalNav){ moreStyle.innerHTML += ` .logo{ margin-left: -60px!important; /*the compact layout uses more of the space to the side, so we line up the logo to the left*/ } .footer{ margin-top: 0px !important; /*less space wasted over the footer*/ } .container{ padding-left: 10px; padding-right: 0px; } .hide{ top: 0px!important; /*stop that top bar from jumping all over the place*/ } .notification{ margin-bottom: 10px!important; } /*Dropdown menus are site theme based*/ .quick-search .el-select .el-input .el-input__inner, .quick-search .el-select .el-input.is-focus .el-input__inner, .el-select-dropdown, .el-dropdown-menu, .el-dropdown-menu__item--divided::before{ background: rgba(var(--color-foreground)); } .el-select-dropdown__item.hover, .el-select-dropdown__item:hover{ background: rgba(159, 173, 189, .2); } .el-dropdown-menu__item--divided{ border-color: rgba(var(--color-background)); } .el-select-group__wrap:not(:last-of-type)::after{ background: rgba(var(--color-foreground)); } .el-popper[x-placement^="bottom"] .popper__arrow, .el-popper[x-placement^="bottom"] .popper__arrow::after{ border-bottom-color: rgba(var(--color-foreground)); } .el-popper[x-placement^="top"] .popper__arrow, .el-popper[x-placement^="top"] .popper__arrow::after{ border-top-color: rgba(var(--color-foreground)); } /*Additions to dark theme dropdown*/ .site-theme-dark .quick-search.el-select .el-input.el-input__inner, .site-theme-dark .quick-search .el-select .el-input.is-focus .el-input__inner, .site-theme-dark .el-select-dropdown, .site-theme-dark .el-dropdown-menu, .site-theme-dark .el-dropdown-menu__item--divided::before{ background: rgba(17, 22, 29); } .site-theme-dark .el-select-group__wrap:not(:last-of-type)::after{ background: rgba(17, 22, 29); } .site-theme-dark .el-popper[x-placement^="bottom"] .popper__arrow, .site-theme-dark .el-popper[x-placement^="bottom"] .popper__arrow::after{ border-bottom-color: rgba(17, 22, 29); opacity: 1; } .site-theme-dark .el-popper[x-placement^="top"] .popper__arrow, .site-theme-dark .el-popper[x-placement^="top"] .popper__arrow::after{ border-top-color: rgba(17, 22, 29); opacity: 1; } /*--------------VERTICAL-NAV----------------*/ /*code by Kuwabara: https://userstyles.org/styles/161017/my-little-anilist-theme-can-not-be-this-cute*/ div#nav { width: 65px; height: 100%; position: fixed!important; top: 0!important; left: 0!important; transition: none!important; } div#nav.transparent { background: rgba(var(--color-nav))!important; } .nav .wrap .links { font-size: 1rem; height: 355px; margin-left: 0px; padding-left: 0px; width: 65px; flex-direction: column; } .nav .wrap .links .link { width: 65px; padding: 5px 0px; margin-bottom: 10px; text-align: center; /*color: rgba(var(--color-blue),0.6);*/ transition: 0.3s; } .nav .wrap .links .link:hover { background: rgba(var(--color-blue),0.1); } .nav .wrap .links .link:before { display: block; content: ''; height: 24px; width: 65px; background-size: 24px; margin-left: 0; margin-bottom: 3px; background-repeat: no-repeat; background-position: center; } .nav .link[href="/home"]:before { background: url(https://puu.sh/AvnoD/65ab2968a6.png); } .nav .link[href*="/user/"]:before { background: url(https://puu.sh/AvnlD/7a305ea3c6.png); } .nav .link[href*="/animelist"]:before { background: url(https://puu.sh/AvnpD/74ec4b003b.png); } .nav .link[href*="/mangalist"]:before { background: url(https://puu.sh/AvnpD/74ec4b003b.png); } .nav .link[href="/search/anime"]:before { background: url(https://puu.sh/AvnqX/a04ce29b43.png); } .nav .link[href*="/forum"]:before { background: url(https://puu.sh/Avnqt/1fc2afcc8c.png); } div#nav.transparent { background: #1f2631!important; /*background: rgba(var(--color-nav))!important;*/ } #app { margin-top: 0; padding-left: 65px; } .nav .user { position: fixed; top: 0; display: grid; grid-gap: 40px; width: 65px; grid-template-rows: 50px 20px; } .search .dropdown.el-dropdown { font-size: 10px; } .search .el-dropdown-link svg { width: 65px; height: 23px; padding: 5px 0; background: rgba(0, 0, 0, 0.2); } .nav .search { width: 65px; margin: 0; text-align: center; position: fixed; top: 56px; } .quick-search-results { z-index: 999!important; top: 136px!important; } .user .avatar:hover+.chevron { opacity: 0!important; } .hide { top:0px!important; } /*-------------------*/ ::selection { background: rgba(var(--color-blue),0.4); } ::-webkit-selection { background: rgba(var(--color-blue),0.4); } ::-moz-selection { background: rgba(var(--color-blue),0.4); } ::-webkit-scrollbar { width: 7px; height: 7px; } ::-webkit-scrollbar-thumb { background: #4e4e4e!important; } #app{ overflow:unset; } .user .header-wrap{ position: sticky; top: -332px; z-index: 100; } .list-stats{ margin-bottom:0px!important; } .activity-feed-wrap{ margin-top:25px; } .logo{ position: absolute; margin-bottom: -500px; display:none!important; margin-left: 0px !important; } /*home stuff*/ .reply .header a.name[href="/user/Abyss/"]::after{ content: "Prima Undine"; margin-left:10px; padding:3px; border-radius:2px; animation-duration: 20s; animation-iteration-count: infinite; animation-name: rainbow; animation-timing-function: ease-in-out; color: rgba(var(--color-white)); } .reply .header a.name[href="/user/Taluun/"]::after{ content: "Best Friend"; margin-left:10px; padding:3px; border-radius:2px; animation-duration: 20s; animation-iteration-count: infinite; animation-name: rainbow; animation-timing-function: ease-in-out; color: rgba(var(--color-white)); } .details > .donator-badge{ left:105px!important; padding:2px!important; top: 100%!important; -ms-transform: translate(0px, -34px); -webkit-transform: translate(0px, -34px); transform: translate(0px, -34px); } .activity-text > div > div > div > .donator-badge{ position:relative!important; display:inline-block!important; left:0px!important; top:-10px!important; -ms-transform: translate(0px, 0px); -webkit-transform: translate(0px, 0px); transform: translate(0px, 0px); } .activity-replies{ margin-top:5px!important; margin-left:30px!important; margin-right:0px!important; } .activity-entry{ margin-bottom: 10px!important; } .list-preview{ grid-gap: 10px!important; padding:0px!important; background: rgb(0,0,0,0)!important; } .home{ grid-column-gap: 30px!important; margin-top: 20px!important; grid-template-columns: auto 470px!important; } .activity-feed .reply{ padding:8px!important; margin-bottom: 5px!important; } .list .details{ padding-left:10px!important; padding-top:5px!important; padding: 10px 16px!important; padding-bottom: 7px !important; } .search{ margin-top:0px!important; } .emoji-spinner{ display:none!important; } .wrap{ border-radius: 2px!important; } .name{ margin-left: 0px!important; } .activity-text > div > div > div > .name{ margin-left: 12px!important; } .button{ margin-right: 5px!important; } .actions{ margin-bottom: 5px!important; bottom: 0px!important; } .status{ display: inline-block!important; } .avatar{ display: block!important; } /*https://anilist.co/activity/29333544*/ .activity-entry .header a:nth-child(1){ display: inline-block!important; } .wrap > .list{ min-height: 80px!important; grid-template-columns: 60px auto!important; } .popper__arrow{ display: none!important; } .media-preview{ grid-gap: 10px!important; padding: 0px!important; background: rgb(0,0,0,0)!important; } .media-preview-card{ display: inline-grid!important; } .replies > .count{ color: rgba(var(--color-blue)); } .action.likes{ color: unset; } .like-wrap > .button:hover{ color: rgba(var(--color-red)); } .replies > *:nth-child(2){ color: rgba(var(--color-blue)); } .actions{ cursor: default; } .activity-manga_list > div > div > div > div > .title{ color: rgba(var(--color-green))!important; } .markdown-editor > [title="Image"], .markdown-editor > [title="Youtube Video"], .markdown-editor > [title="WebM Video"]{ color: rgba(var(--color-red)); } .markdown-editor > div > svg{ min-width: 1em!important; } .feed-select .toggle > div.active[data-v-f37b0a84]{ color: rgba(var(--color-blue))!important; } .home .details .status:first-letter, .social .details .status:first-letter { text-transform:lowercase; } .activity-edit .markdown-editor, .activity-edit .input{ margin-bottom: 10px!important; } .activity-edit .actions{ margin-bottom: 25px!important; } .like-wrap .users{ overflow-y: scroll!important; } .page-content .container .home.full-width{ grid-template-columns: unset !important; } .activity-text .text { border-left: solid 5px rgba(var(--color-blue)); } .section-header{ padding-left:0px!important; } .cover[href="/anime/440/Shoujo-Kakumei-Utena/"] + .details{ border-color: #eb609e; border-width: 4px; border-style: solid; border-left-width: 0px; } .sticky .avatar, .sticky .body-preview, .sticky .categories, .sticky .name{ display: none!important; } .search > .filter, .search > .preview{ margin-top: 20px; } `; }; if(useScripts.CSSdecimalPoint){ moreStyle.innerHTML += ` .medialist.POINT_10_DECIMAL .score[score="10"]::after, .medialist.POINT_10_DECIMAL .score[score="9"]::after, .medialist.POINT_10_DECIMAL .score[score="8"]::after, .medialist.POINT_10_DECIMAL .score[score="7"]::after, .medialist.POINT_10_DECIMAL .score[score="6"]::after, .medialist.POINT_10_DECIMAL .score[score="5"]::after, .medialist.POINT_10_DECIMAL .score[score="4"]::after, .medialist.POINT_10_DECIMAL .score[score="3"]::after, .medialist.POINT_10_DECIMAL .score[score="2"]::after, .medialist.POINT_10_DECIMAL .score[score="1"]::after{ margin-left:-4px; content: ".0"; } `; }; if(useScripts.CSSsmileyScore){ moreStyle.innerHTML += ` .fa-frown{ color: red; } .fa-smile{ color: green; } `; }; if(useScripts.CSSstudioStats){ moreStyle.innerHTML += ` .stats-wrap .row a[href="/studio/34/Hal-Film-Maker"], .stats-wrap .row a[href="/studio/18/Toei-Animation"], .stats-wrap .row a[href="/studio/11/MADHOUSE"], .stats-wrap .row a[href="/studio/1/Studio-Pierrot"], .stats-wrap .row a[href="/studio/37/Studio-DEEN"], .stats-wrap .row a[href="/studio/14/Sunrise"], .stats-wrap .row a[href="/studio/7/JC-Staff"], .stats-wrap .row a[href="/studio/6/Gainax"], .stats-wrap .row a[href="/studio/44/Shaft"], .stats-wrap .row a[href="/studio/2/Kyoto-Animation"], .stats-wrap .row a[href="/studio/65/Tokyo-Movie-Shinsha"], .stats-wrap .row a[href="/studio/10/Production-IG"], .stats-wrap .row a[href="/studio/561/A1-Pictures"], .stats-wrap .row a[href="/studio/21/Studio-Ghibli"], .stats-wrap .row a[href="/studio/68/Mushi-Productions"], .stats-wrap .row a[href="/studio/48/AIC"], .stats-wrap .row a[href="/studio/200/Tezuka-Productions"], .stats-wrap .row a[href="/studio/43/ufotable"], .stats-wrap .row a[href="/studio/291/CoMix-Wave"], .stats-wrap .row a[href="/studio/73/TMS-Entertainment"], .stats-wrap .row a[href="/studio/829/Studio-Jack"], .stats-wrap .row a[href="/studio/28/Oriental-Light-and-Magic"], .stats-wrap .row a[href="/studio/27/Xebec"], .stats-wrap .row a[href="/studio/3/GONZO"], .stats-wrap .row a[href="/studio/112/Brains-Base"], .stats-wrap .row a[href="/studio/300/SILVER-LINK"], .stats-wrap .row a[href="/studio/51/diomeda"], .stats-wrap .row a[href="/studio/314/White-Fox"], .stats-wrap .row a[href="/studio/22/Nippon-Animation"], .stats-wrap .row a[href="/studio/196/Production-Reed"], .stats-wrap .row a[href="/studio/199/Studio-Nue"], .stats-wrap .row a[href="/studio/803/Trigger"], .stats-wrap .row a[href="/studio/132/PA-Works"], .stats-wrap .row a[href="/studio/95/Doga-Kobo"], .stats-wrap .row a[href="/studio/287/David-Production"], .stats-wrap .row a[href="/studio/8/Artland"], .stats-wrap .row a[href="/studio/569/MAPPA"], .stats-wrap .row a[href="/studio/858/Wit-Studio"], .stats-wrap .row a[href="/studio/41/Satelight"], .stats-wrap .row a[href="/studio/456/Lerche"], .stats-wrap .row a[href="/studio/91/feel"], .stats-wrap .row a[href="/studio/290/Kinema-Citrus"], .stats-wrap .row a[href="/studio/32/Manglobe"], .stats-wrap .row a[href="/studio/4418/8bit"], .stats-wrap .row a[href="/studio/555/Studio-Chizu"], .stats-wrap .row a[href="/studio/45/Pink-Pineapple"], .stats-wrap .row a[href="/studio/47/Studio-Khara"], .stats-wrap .row a[href="/studio/13/Studio-4C"], .stats-wrap .row a[href="/studio/103/Tatsunoko-Production"], .stats-wrap .row a[href="/studio/6071/Studio-Shuka"], .stats-wrap .row a[href="/studio/839/LIDENFILMS"], .stats-wrap .row a[href="/studio/25/Milky-Animation-Label"], .stats-wrap .row a[href="/studio/6222/CloverWorks"], .stats-wrap .row a[href="/studio/309/GoHands"], .stats-wrap .row a[href="/studio/911/Passione"], .stats-wrap .row a[href="/studio/418/Studio-Gokumi"], .stats-wrap .row a[href="/studio/365/PoRO"], .stats-wrap .row a[href="/studio/292/AIC-Plus"], .stats-wrap .row a[href="/studio/38/Arms"], .stats-wrap .row a[href="/studio/6069/Studio-3Hz"], .stats-wrap .row a[href="/studio/541/Seven"], .stats-wrap .row a[href="/studio/6145/Science-SARU"], .stats-wrap .row a[href="/studio/4/BONES"]{ color:rgba(var(--color-blue)) } `; }; document.getElementsByTagName('head')[0].appendChild(moreStyle); var queryMediaList = ` query ($name: String!, $listType: MediaType) { MediaListCollection (userName: $name, type: $listType) { lists { entries { ... mediaListEntry } } } } fragment mediaListEntry on MediaList { mediaId status progress progressVolumes repeat notes startedAt { year month day } media { episodes chapters volumes duration nextAiringEpisode { episode } format title { romaji } tags { name } } scoreRaw: score (format: POINT_100) } `; var queryActivity = "query ($id: Int!) { Activity(id: $id) { ... on TextActivity { id userId type replyCount text createdAt user { id name avatar { large } } likes { id name avatar { large } } replies { id text(asHtml: true) createdAt user { id name avatar { large } } likes { id name avatar { large } } } } ... on ListActivity { id userId type status progress replyCount createdAt user { id name avatar { large } } media { coverImage { large } id title { userPreferred } } likes { id name avatar { large } } replies { id text(asHtml: true) createdAt user { id name avatar { large } } likes { id name avatar { large } } } } ... on MessageActivity { id type replyCount createdAt messenger { id name avatar { large } } likes { id name avatar { large } } replies { id text(asHtml: true) createdAt user { id name avatar { large } } likes { id name avatar { large } } } } } }"; var activityCache = {};//reduce API calls even if localStorage is not available. var handleResponse = function(response){//generic handling of API responses return response.json().then(function(json){ return response.ok ? json : Promise.reject(json); }); }; var handleError = function(error){ //alert("Error, check console"); //fixme console.error(error); }; var url = 'https://graphql.anilist.co';//Current Anilist API location var listActivityCall = function(query,variables,callback,vars,cache){ /* query=graphql request vars=just values to pass on to the callback function cache::true use cached data if available cache::false allways fetch new data */ var handleData = function(data){ pending[variables.id] = false; if(localStorageAvailable){ localStorage.setItem(variables.id + "",JSON.stringify(data)); aniscriptsUsed.keys.push(variables.id); if(aniscriptsUsed.keys.length > 1000){//don't hog to much of localStorage for(var i=0;i<10;i++){ localStorage.removeItem(aniscriptsUsed.keys[0]); aniscriptsUsed.keys.shift(); }; }; localStorage.setItem("aniscriptsUsed",JSON.stringify(aniscriptsUsed)); } else{ activityCache[variables.id] = data;//still useful even if we don't have localstorage }; callback(data,vars); }; var options = {//generic headers provided by API examples method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: JSON.stringify({ query: query, variables: variables }) }; if(localStorageAvailable && cache){ var localStorageItem = localStorage.getItem(variables.id + ""); if(!(localStorageItem === null)){ callback(JSON.parse(localStorageItem),vars); console.log("localStorage cache hit"); return; }; } else if(activityCache.hasOwnProperty(variables.id) && cache){ callback(activityCache[variables.id],vars); console.log("cache hit"); return; }; fetch(url,options).then(handleResponse).then(handleData).catch(handleError); ++document.APIcallsUsed; console.log("fetching new data"); }; var generalAPIcall = function(query,variables,callback){//has no cache stuff to worry about var handleData = function(data){ callback(data,variables); }; var options = { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, body: JSON.stringify({ query: query, variables: variables }) }; fetch(url,options).then(handleResponse).then(handleData).catch(handleError); ++document.APIcallsUsed; console.log("fetching new data"); }; var enhanceSocialTab = function(){ var perform = function(){ if(!document.URL.match(/https:\/\/anilist\.co\/(anime|manga)\/\d*\/[0-9a-zA-Z-]*\/social/)){ return; }; var listOfActs = document.getElementsByClassName("activity-entry"); for(var i=0;i 1) ){ listOfActs[i].marked = true; listOfActs[i].children[0].children[0].children[0].remove();//remove cover image var elements = listOfActs[i].children[0].children[0].children[0].children; elements[2].parentNode.insertBefore(elements[2],elements[0]);//move profile picture to the beginning of the line elements[0].parentNode.parentNode.style.minHeight = "70px"; elements[0].parentNode.classList.add("hohSocialTabActivityCompressedContainer"); elements[0].style.verticalAlign = "bottom"; elements[0].style.marginTop = "0px"; elements[1].classList.add("hohSocialTabActivityCompressedName"); elements[2].classList.add("hohSocialTabActivityCompressedStatus"); listOfActs[i].style.marginBottom = "10px"; }; }; /*add average score to social tab*/ var listOfFollowers = document.getElementsByClassName("follow"); var averageScore = 0; var averageCount = 0; for(var i=0;i 1){ this.parentNode.parentNode.parentNode.children[1].style.display = "none"; }; } else{ this.innerHTML = "[-]"; this.parentNode.parentNode.children[1].style.display = "block"; if(this.parentNode.parentNode.parentNode.children.length > 1){ this.parentNode.parentNode.parentNode.children[1].style.display = "block"; }; }; }; comments[i].children[0].children[0].insertBefore(hider,comments[i].children[0].children[0].children[0]); }; }; }; var tryAgain = function(){//loop the notification script until we leave that page setTimeout(function(){ perform(); if(document.URL.match(/https:\/\/anilist\.co\/forum\/thread\/.*/)){ tryAgain() } else{ activeScripts.forumComments = false; } },100); }; activeScripts.forumComments = true; perform(); tryAgain(); }; var dubMarker = function(){ if(!document.URL.match(/https:\/\/anilist\.co\/anime\/.*/)){ return; }; if(document.getElementById("dubNotice")){ return; }; var variables = { id: document.URL.match(/\/anime\/(\d+)\//)[1], page: 1, language: "ENGLISH" };//may add support for other languages later, but there isn't enough data for that yet. var query = ` query ($id: Int!, $type: MediaType, $page: Int = 1, $language: StaffLanguage) { Media(id: $id, type: $type) { characters(page: $page, sort: [ROLE], role: MAIN) { edges { node { id } voiceActors (language: $language) { language } } } } } `; var dubCallback = function(data){ var dubNoticeLocation = document.getElementsByClassName("sidebar"); if(!dubNoticeLocation.length && document.URL.match(/https:\/\/anilist\.co\/anime\/.*/)){ setTimeout(function(){ dubCallback(data); },200); return; }; var dubFlag = false; for(var i=0;i 0){ dubFlag = true; break; }; }; if(dubFlag){ var dubNotice = document.createElement("p"); dubNotice.id = "dubNotice"; dubNotice.innerText = "English dub available"; dubNoticeLocation[0].insertBefore(dubNotice,dubNoticeLocation[0].firstChild); }; }; generalAPIcall(query,variables,dubCallback); } var enhanceStaff = function(){//currently only adds a favourite count if(!document.URL.match(/https:\/\/anilist\.co\/staff\/.*/)){ return; }; var filterGroup = document.getElementsByClassName("content"); if(!filterGroup.length){ setTimeout(function(){ enhanceStaff(); },200);//takes some time to load return; }; filterGroup = filterGroup[0]; var favCount = document.createElement("span"); favCount.id = "hohFavCount"; favCount.innerText; filterGroup.appendChild(favCount); var variables = {id: document.URL.match(/\/staff\/(\d+)\//)[1]}; var query = "query($id: Int!){Staff(id: $id){favourites}}"; var favCallback = function(data){ var favButton = document.getElementsByClassName("favourite"); if(data.data.Staff.favourites == 0 && favButton[0].classList.contains("isFavourite")){//safe to assume document.getElementById("hohFavCount").innerText = data.data.Staff.favourites+1; } else{ document.getElementById("hohFavCount").innerText = data.data.Staff.favourites; }; if(favButton.length){ favButton[0].onclick = function(){ var favCount = document.getElementById("hohFavCount"); if(this.classList.contains("isFavourite")){ favCount.innerText = Math.max(parseInt(favCount.innerText)-1,0);//0 or above, just to avoid looking silly } else{ favCount.innerText = parseInt(favCount.innerText)+1; }; }; }; }; generalAPIcall(query,variables,favCallback); }; //todo: link the relevant status post var addCompletedScores = function(){ var perform = function(){ if(!document.URL.match(/https:\/\/anilist\.co\/(home|user|activity)\/?([a-zA-Z0-9-]+)?\/?$/)){ return; }; var status = document.getElementsByClassName("status"); for(var i=0;i 100){//horrible test, but we have not markup to go from. Assumes the tag dropdown is the only one with more than 100 children bestGuess = i; }; }; if(bestGuess == false){ return; }; if(possibleTagContainers[bestGuess].hasOwnProperty("hohMarked")){ return; } else{ possibleTagContainers[bestGuess].hohMarked = true; }; var superBody = document.getElementsByClassName("el-dialog__body")[0]; var descriptionTarget = document.createElement("span"); descriptionTarget.id = "hohDescription"; superBody.insertBefore(descriptionTarget,superBody.children[2]); for(var i=0;i