YouTube Sorter Button

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

As of 2019-05-23. See the latest version.

// ==UserScript==
// @name         YouTube Sorter Button
// @namespace    http://tampermonkey.net/
// @version      0.1
// @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) {
        let viewsTitle = $(e).find("a[aria-label]").attr("aria-label");
        return parseInt(/([\d,]+) views$/.exec(viewsTitle)[1].replace(",",""));
    }
    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();
    $("#sub-menu:visible").on("DOMNodeInserted", addButton)
})(window.jQuery);