Youtube Sort Playlist

Sort playlist while saving videos to playlists. Type in textbox to filter playlists.

As of 2020-04-13. See the latest version.

// ==UserScript==
// @name         Youtube Sort Playlist
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  Sort playlist while saving videos to playlists. Type in textbox to filter playlists.
// @author       Vivek Makwana
// @match        https://www.youtube.com/
// @grant        none
// @require https://code.jquery.com/jquery-3.4.1.min.js
// ==/UserScript==

document.addEventListener("click", function(e){
    var filter_save_to;
    if($(e.target).hasClass('ytd-menu-service-item-renderer')){
        var refrashInterval = setInterval(function(){
            if($('#header #title')){
                $('#header #title').css('width','200px');
                $('#header #title').html('<button id="sort_save_to" style="background: rgba(255,255,255,0.08); border: none; border-radius: 2px; color: #fff; padding: 8px 16px; margin-right: 16px;">A-Z ↓</button><input type="text" class="filter_save_to" style="background: #121212; color: rgba(255,255,255,0.88); padding: 8px 16px; border: 0; border-radius: 2px; width: 30%;" />');
                clearInterval(refrashInterval);
            }
            if($('.filter_save_to')){
                $(document).on('keyup', '.filter_save_to', function(e){
                    var arr = Array();
                    document.querySelector("#playlists.ytd-add-to-playlist-renderer").style.display = "flex";
                    document.querySelector("#playlists.ytd-add-to-playlist-renderer").style.flexDirection = "column";
                    document.querySelectorAll("#playlists yt-formatted-string").forEach(function(item){
                        arr.push(item.innerHTML);
                    })
                    let filtered = arr.filter(function(item){
                        return (item!='<!--css-build:shady-->' && item.toLowerCase().includes(e.target.value.toLowerCase()))
                    })
                    document.querySelectorAll("#playlists.ytd-add-to-playlist-renderer #label").forEach(function(el1, index){
                        el1.closest("ytd-playlist-add-to-option-renderer.ytd-add-to-playlist-renderer").style.display = "none";
                        filtered.forEach(function(item) {
                            if(el1.innerHTML == item)
                            {
                                el1.closest("ytd-playlist-add-to-option-renderer.ytd-add-to-playlist-renderer").style.display = "block";
                            }
                        });
                    })
                    document.querySelector("ytd-playlist-add-to-option-renderer.style-scope.ytd-add-to-playlist-renderer:last-child").style.marginBottom = '16px';
                })
            }
        }, 500)
        }
    if(e.target.id=='sort_save_to'){
        var arr = Array();
        document.querySelector("#playlists.ytd-add-to-playlist-renderer").style.display = "flex";
        document.querySelector("#playlists.ytd-add-to-playlist-renderer").style.flexDirection = "column";
        document.querySelectorAll("#playlists yt-formatted-string").forEach(function(item){
            arr.push(item.innerHTML);
        })
        let filtered = arr.filter(function(item){
            return item!='<!--css-build:shady-->'
        })
        i = 1;
        filtered.sort().forEach(function(sort1){
            document.querySelectorAll("#playlists yt-formatted-string").forEach(function(el1, index){
                if(sort1==el1.innerHTML){
                    el1.closest("ytd-playlist-add-to-option-renderer").style.order = i;
                    i++;
                }
            })
        })
        document.querySelector("ytd-playlist-add-to-option-renderer.style-scope.ytd-add-to-playlist-renderer:last-child").style.marginBottom = '16px';
    }
});