// ==UserScript== // @name Anime-Planet Show New Release // @namespace https://greasyfork.org/en/users/689482-quin15 // @version 0.3.0 // @description Shows an icon for number of new releases for manga and anime // @author Quin15 // @match https://www.anime-planet.com/* // @grant none // @downloadURL none // ==/UserScript== NewReleasePopulate = { populateNewRelease: function(entries, entryDataType) { if (entryDataType == null) { if (document.querySelector('li[data-type="manga"] a')) { if (document.querySelector('li[data-type="anime"] a')) { setTimeout(function(){NewReleasePopulate.populateNewRelease(null, "anime");}, 200); } entryDataType = "manga"; } else { entryDataType = "anime"; }; }; if (entries == null) { entries = document.querySelectorAll('li[data-type="' + entryDataType + '"] a'); }; for (var i = 0; i < entries.length; i++) { if (!(entries[i].querySelector('label.NewReleaseLabel'))){ var ongoingColour = "#6F99E4"; if (entryDataType == "manga") { if ($(entries[i].title).find("li.iconVol")[0]) { var releasedNo = $(entries[i].title).find("li.iconVol")[0].innerText.replace(/[A-Za-z :]/g, ""); } else { // To account for mouseover event that has already been fired var releasedNo = document.querySelector('div[role="tooltip"] li.iconVol').innerText.replace(/[A-Za-z :]/g, ""); }; if (releasedNo.includes(';')) { releasedNo = releasedNo.substring(releasedNo.lastIndexOf(";") + 1); }; } else { if ($(entries[i].title).find("li.type")[0]) { var releasedNo = $(entries[i].title).find("li.type")[0].innerText.replace(/[A-Za-z ()]/g, ""); } else { // To account for mouseover event that has already been fired var releasedNo = document.querySelector('div[role="tooltip"] li.type').innerText.replace(/[A-Za-z ()]/g, ""); }; }; if (releasedNo.includes('+')) { ongoingColour = "#8DEA43"; releasedNo = releasedNo.replace("+", ""); } releasedNo = parseInt(releasedNo); var statusArea = document.querySelectorAll('li[data-type="' + entryDataType + '"] a div.statusArea')[i]; if (statusArea.querySelector("div.ttRating")) { statusArea.querySelector("div.ttRating").innerText = "|" + statusArea.querySelector("div.ttRating").innerText; var readNo = parseInt(document.querySelectorAll('li[data-type="' + entryDataType + '"] a div.statusArea')[i].innerText.replace(/\|*/, "").replace(/[A-Za-z ]/g, "")); statusArea.querySelector("div.ttRating").innerText = statusArea.querySelector("div.ttRating").innerText.replace("|", "") } else { var readNo = parseInt(document.querySelectorAll('li[data-type="' + entryDataType + '"] a div.statusArea')[i].innerText.replace(/\|*/, "").replace(/[A-Za-z ]/g, "")); }; if (releasedNo != readNo && !(isNaN(readNo))) { var tag = document.createElement("label"); tag.setAttribute("style", "width: 30px; height: 30px; position: absolute; background: " + ongoingColour + "; z-index: 12; border-radius: 15px; margin-left: calc(50% - 20px); top: -10px; line-height: 28px; color: #fff; text-shadow: 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000, 0px 0px 3px #000;") tag.setAttribute("class", "NewReleaseLabel") tag.innerText = releasedNo - readNo; entries[i].appendChild(tag); tag.parentElement.style = "overflow: visible"; tag.parentElement.parentElement.style = "overflow: visible"; }; }; }; } }; $(document).ready(function() { if (document.querySelector('li[data-type="manga"] a') || document.querySelector('li[data-type="anime"] a')) { setTimeout(function(){NewReleasePopulate.populateNewRelease(null, null);}, 200); }; });