Improve 2xAA's 8bcdump site (non-ID3 mode), adding a last played list and emboldening the currently playing song.
当前为
// ==UserScript==
// @name Improve 8bcDump
// @namespace Improve8bcDump
// @description Improve 2xAA's 8bcdump site (non-ID3 mode), adding a last played list and emboldening the currently playing song.
// @include http://brkbrkbrk.com/8bcdump/
// @version 0.1
// @grant none
// ==/UserScript==
(function() {
// The currently playing song should appear bold in list views.
// .playing is a single <li> in the list of all songs.
// .lastPlayed is an <ol> containing the last played songs.
var styleEl = document.createElement('style');
styleEl.innerHTML = '.playing, .lastPlayed li:first-child { font-weight: bold; }';
styleEl.innerHTML += '.playing:after, .lastPlayed li:first-child:after { content: " (playing)" }';
document.body.appendChild(styleEl);
// Create a queue for the last played songs.
// The queue is realized in an <ol>, contained in parentElement.
function LastPlayedList(maxLength, parentElement) {
// Create a heading for the last played list
var heading = document.createElement('h2');
heading.textContent = 'Last played';
parentElement.appendChild(heading);
// Create the list itself
var list = document.createElement('ol');
list.className = 'lastPlayed';
parentElement.appendChild(list);
// Push songs through the stack
this.push = function(song) {
var nodes = list.childNodes;
if (nodes.length == maxLength) {
list.removeChild(nodes[nodes.length - 1]);
}
var newItem = document.createElement('li');
newItem.textContent = song;
list.insertBefore(newItem, nodes[0]);
}
}
// Create a list at the bottom of the page to hold the last 10 songs
var lastPlayedDiv = document.createElement('div');
document.body.appendChild(lastPlayedDiv);
var lastPlayedList = new LastPlayedList(10, lastPlayedDiv);
// The player at the bottom of the page
// should also show the filename when playing songs.
var updateID3_super = window.updateID3;
// Override the existing updateID3 method
window.updateID3 = function(id3) {
updateID3_super(id3);
var url = document.querySelector('li.playing a').href;
var urlParts = decodeURIComponent(url).split('/');
var filename = urlParts.pop();
var liID3 = document.querySelector('li.id3 ');
liID3.textContent += ', Filename: ' + filename;
// Add the current song to the last played list
lastPlayedList.push(liID3.textContent);
}
}());