Greasy Fork

Anime-Planet Show New Release

Shows an icon for number of new releases for manga and anime

当前为 2020-12-13 提交的版本,查看 最新版本

// ==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

// ==/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);
    };
});