YouTube Uploads Sorter Button

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

目前為 2022-04-07 提交的版本,檢視 最新版本

// ==UserScript==
// @name         YouTube Uploads Sorter Button
// @namespace    http://tampermonkey.net/
// @version      0.13
// @description  Adds a button to a YouTube channel's videos page which sorts recent uploads by views
// @author       Lex
// @include      /^https?:\/\/(www\.)?youtube\.com\/(c|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 {
                const views = parseInt(/([\d,]+) views( - play Short)?$/.exec(viewsTitle)[1].replace(/,/g, ""));
                return views;
            }
        } catch(err) {
            return 0;
        }
    }
    function sortByViews() {
        let container = $("#page-manager #primary #items:visible");
        let items = container.children();
        container.append(items.toArray().sort(function(a, b) {
            return getViews(b) - getViews(a);
        }));
    }

    setTimeout(addButton, 1000);
    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);