// ==UserScript== // @name emusic inline player // @namespace http://michaeldehaan.net/ // @description Version 0.01. Converts emusic links to use an open source in-browser flash player instead of your configured m3u player (like iTunes). http://musicplayer.sourceforge.net/. This script licensed GPL v2 or later // ==/UserScript== // derived from and much credit to: //Emusic Player // @namespace http://www.slothlovechunk.org/greasemonkey // @description Version: 0.3 . Use a tiny flash player to play track samples instead of itunes/etc. Written by Dana Powers @ gmail.com. Based loosely off the del.icio.us playtagger. I provide this to you under the terms of the GNU GPL : http://www.gnu.org/licenses/gpl.txt . // @include http://www.emusic.com/* // // basically the only difference is mine is modified to use the OSS player versus // the sloth player :) EP = { playimg: null, player: null, go: function() { var all = document.getElementsByTagName('a') for (var i = 0, o; o = all[i]; i++) { if(o.href.match(/m3u\/song/i)) { var img = o.getElementsByTagName('img')[0] img.addEventListener('click', EP.makeToggle(img, o.href), true) img.setAttribute('srcorig', img.src) img.style.cursor = 'pointer' o.parentNode.insertBefore(img, o) o.parentNode.removeChild(o) }}}, toggle: function(img, url) { if (EP.playimg == img) EP.destroy() else { if (EP.playimg) EP.destroy() img.src = 'http://www.slothlovechunk.org/stop.gif'; EP.playimg = img; GM_log("sending XMLHttpRequest"); var req = new XMLHttpRequest() req.open("GET", url, false) req.send(null) GM_log("state: " + req.readyState); GM_log("status: " + req.status); GM_log("response: " + req.responseText); GM_log("track: " + req.responseText.replace(/#.*/g, '').replace(/\r?\n?/g,'')); EP.player = document.createElement('span') EP.player.innerHTML = ' no flash' img.parentNode.insertBefore(EP.player, img.nextSibling) }}, destroy: function() { EP.playimg.src = EP.playimg.getAttribute('srcorig') EP.playimg = null EP.player.removeChild(EP.player.firstChild) EP.player.parentNode.removeChild(EP.player) EP.player = null }, makeToggle: function(img, url) { return function(){ EP.toggle(img, url) }} } EP.go();