您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
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 nodes itemsArr.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 nodes itemsArr.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 nodes itemsArr.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; })();