YouTube Uploads Sorter Button

Adds a button to a YouTube channel's videos page which sorts recent uploads by views

目前为 2019-05-24 提交的版本。查看 最新版本

// ==UserScript==
// @name         YouTube Uploads Sorter Button
// @namespace    http://tampermonkey.net/
// @version      0.12
// @description  Adds a button to a YouTube channel's videos page which sorts recent uploads by views
// @author       Lex
// @include      /^https?:\/\/(www\.)?youtube\.com\/(channel|user)\//
// @require      https://code.jquery.com/jquery-3.2.1.min.js
// @grant        none
// ==/UserScript==

(function($) {
    'use strict';

    function addButton() {
        if ($("#sortViewButton").length == 0) {
            $("<button>").attr("id", "sortViewButton").html("Sort by Views").click(sortByViews).prependTo("#sort-menu");
        }
    }
    function getViews(e) {
        try {
            let viewsTitle = $(e).find("a[aria-label]").attr("aria-label");
            if (viewsTitle.search(/No views$/) > -1) // video has no views yet
                return 0;
            else
                return parseInt(/([\d,]+) views$/.exec(viewsTitle)[1].replace(/,/g, ""));
        } catch(err) {
            return 0;
        }
    }
    function sortByViews() {
        let container = $("#page-manager #primary #items:visible");
        let items = container.children();
        items.sort(function(a, b) {
            return getViews(a) < getViews(b);
        });
        items.detach().appendTo(container);
    }

    addButton(); // try to add the button immediately
    $("#sub-menu:visible").on("DOMNodeInserted", addButton); // but also add button whenever the #sub-menu is changed
})(window.jQuery);