Sorts Spotify Web Player playlists by track name.
- // ==UserScript==// @name Spotify Playlist Sorter// @namespace https://gist.github.com/GamrCorps/// @version 1.6.1// @description Sorts Spotify Web Player playlists by track name.// @author ZekNikZ// @match https://open.spotify.com/*// @grant none// ==/UserScript==var zkz_swp_d = false;function zkz_srt() {if (!zkz_swp_d) {var btn1 = document.createElement('BUTTON');btn1.appendChild(document.createTextNode('N'));btn1.setAttribute("style", "margin-left: .5em;");btn1.onclick = zkz_srt;document.getElementsByClassName('now-playing-bar__right')[0].appendChild(btn1);var btn3 = document.createElement('BUTTON');btn3.appendChild(document.createTextNode('A'));btn3.setAttribute("style", "margin-left: .5em;");btn3.onclick = zkz_srt_art;document.getElementsByClassName('now-playing-bar__right')[0].appendChild(btn3);var btn2 = document.createElement('BUTTON');btn2.appendChild(document.createTextNode('#'));btn2.setAttribute("style", "margin-left: .5em;");btn2.onclick = zkz_srt_num;document.getElementsByClassName('now-playing-bar__right')[0].appendChild(btn2);zkz_swp_d = true;}console.log('SORTING PLAYLIST BY NAME...');var list = document.getElementsByClassName('tracklist');var items = list[0].childNodes;var itemsArr = [];for (var i in items) {if (items[i].nodeType == 1) { // get rid of the whitespace text nodesitemsArr.push(items[i]);}}itemsArr.sort(function(a, b) {var _a = a.getElementsByClassName('track-name')[0].innerHTML;var _b = b.getElementsByClassName('track-name')[0].innerHTML;return _a == _b ? 0 : (_a > _b ? 1 : -1);});for (i = 0; i < itemsArr.length; ++i) {list[0].appendChild(itemsArr[i]);}}function zkz_srt_num() {console.log('SORTING PLAYLIST BY NUMBER...');var list = document.getElementsByClassName('tracklist');var items = list[0].childNodes;var itemsArr = [];for (var i in items) {if (items[i].nodeType == 1) { // get rid of the whitespace text nodesitemsArr.push(items[i]);}}itemsArr.sort(function(a, b) {var _a = parseFloat(a.getElementsByClassName('position top-align')[0].innerHTML);var _b = parseFloat(b.getElementsByClassName('position top-align')[0].innerHTML);return _a == _b ? 0 : (_a > _b ? 1 : -1);});for (i = 0; i < itemsArr.length; ++i) {list[0].appendChild(itemsArr[i]);}}function zkz_srt_art() {console.log('SORTING PLAYLIST BY ARTIST...');var list = document.getElementsByClassName('tracklist');var items = list[0].childNodes;var itemsArr = [];for (var i in items) {if (items[i].nodeType == 1) { // get rid of the whitespace text nodesitemsArr.push(items[i]);}}itemsArr.sort(function(a, b) {var _a = a.getElementsByClassName('artists-album')[0].textContent;var _b = b.getElementsByClassName('artists-album')[0].textContent;return _a == _b ? 0 : (_a > _b ? 1 : -1);});for (i = 0; i < itemsArr.length; ++i) {list[0].appendChild(itemsArr[i]);}}(function() {'use strict';window.onload = zkz_srt;})();