MDL Updates

Small changes to mydramalist

// ==UserScript==
// @name         MDL Updates
// @namespace    http://hermanfassett.me
// @version      0.1
// @description  Small changes to mydramalist
// @author       You
// @match        *://mydramalist.com/*
// @grant        GM_addStyle
// ==/UserScript==

(function() {
    'use strict';

    GM_addStyle('.airing.not { background-color: #f0ad4e !important; }');

    // Get api token
    function getToken() {
        var t = window.document.cookie.match("(^|;)\\s*jl_sess\\s*=\\s*([^;]*)\\s*(;|$)");
        return t ? decodeURIComponent(t[2]) : null
    }

    // Add a status (upcoming, airing, aired) column to watchlists and add upcoming tag in title column
    function addStatusColumnToWatchlist() {
        $("thead").each(function(index) {
            let tr = $(this).find("tr");
            if (tr) {
                let lastLink = tr.children().last().find("a").attr("href");
                let newLink = lastLink.replace(/sortTable\((\d+),(\d+)\)/, ($0, $1, $2) => `sortTable(${(parseInt($1)+1)},${$2})`);
                tr.append(`<th width="85" class="text-center"><a href="${newLink}">Status <i class="fa fa-caret-down"></i></a></th>`);
            }
        });

        $("tr[id]").each(function() {
            let tr = $(this);
            let id = $(this).attr("id").substring(2);
            let td = $(this).find("td").first();
            $.getJSON(`/v1/users/watchaction/${id}?token=${getToken()}`, function(json) {
                if (json.title.released === false) {
                    td.append(`<span class="not airing">upcoming</span>`);
                }
                let lastSort = tr.children().last().attr("class");
                let newSort = lastSort.replace(/sort(\d+)/, ($0, $1) => `sort${parseInt($1)+1}`);
                console.log(lastSort);
                tr.append(`<td class="${newSort}" width="50" abbr="${json.title.ended ? 2 : json.title.released ? 1 : 0}">${json.title.ended ? "Aired" : json.title.released ? "Airing" : "Upcoming"}</td>`);
            });
        });
    }

    if (/\/dramalist\//.test(window.location.pathname)) {
        addStatusColumnToWatchlist();
    }
})();