Bangumi 番组计划 - 排序

按字母顺序排序观看中的节目单, 不再晕菜了

目前为 2015-01-26 提交的版本。查看 最新版本

// ==UserScript==
// @name         bangumi sort
// @name:zh-CN   Bangumi 番组计划 - 排序
// @namespace    http://ladio.me/
// @version      0.1
// @description  sort items in alphabet order so you won't confuse any more
// @description:zh-CN  按字母顺序排序观看中的节目单, 不再晕菜了
// @author       Xuefer
// @include      http://bangumi.tv/*
// @include      http://bgm.tv/*
// @include      http://chii.in/*
// @run-at       document-start
// ==/UserScript==

function childsByTagName(element, tagName) {
    var childs = element.childNodes;
    var result = [];
    for (var i in childs) {
        if (childs[i].nodeName == tagName) {
            result.push(childs[i]);
        }
    }
    return result;
}

function updateClassName(object, add, remove) {
    var classNames = object.className.split(/ /g);
    var index = classNames.indexOf(remove);
    if (index != -1) {
        classNames.splice(index, 1);
    }
    if (classNames.indexOf(add) == -1) {
        classNames.push(add);
    }
    object.className = classNames.join(' ');
}

function sortElements(list, childs, compareFunction) {
    for (var i in childs) {
        list.removeChild(childs[i]);
    }
    childs.sort(compareFunction);
    for (var i in childs) {
        list.appendChild(childs[i]);
    }
}

function localeCompare(a, b) {
    return a.sortId.localeCompare(b.sortId);
}

function changeLayout() {
    // wait for element to finish
    if (!unsafeWindow.loadXML) {
        setTimeout(changeLayout, 1);
        return;
    }
    var list = document.getElementById("cloumnSubjectInfo");
    list = childsByTagName(list, 'DIV')[0];
    var subjects = childsByTagName(list, 'DIV');
    for (var i in subjects) {
        subjects[i].sortId = childsByTagName(subjects[i], 'A')[0].title;
    }
    sortElements(list, subjects, localeCompare);
    
    list = childsByTagName(list, 'DIV')[0];
    for (var i in subjects) {
        updateClassName(subjects[i], i % 2 == 0 ? 'odd' : 'even', i % 2 == 0 ? 'even' : 'odd');
    }
    
    var list = document.getElementById("prgSubjectList");
    var subjects = childsByTagName(list, 'LI');
    for (var i in subjects) {
        var links = childsByTagName(subjects[i], 'A');
        subjects[i].sortId = links[links.length - 1].title;
    }
    sortElements(list, subjects, localeCompare);
}

changeLayout();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址