MySpace Alternate Music Player

By Yansky Last update Nov 18, 2008 — Installed 2,460 times.

There are 2 previous versions of this script.

// ==UserScript==
// @name           MySpace Alternate Music Player
// @namespace      userscripts.org
// @version        0.3
// @include        http://*.myspace.com/*
// ==/UserScript==


(function() {

	try{

		GM_addStyle('#mp3player{display:none;}');

		/***
		Code by brazil
		http://userscripts.org/scripts/show/8204
		***/
		var ID_LINK_ID = 'ctl00_cpMain_ctl01_UserBasicInformation1_hlDefaultImage';
		var XML_BASE_URL = 'http://mediaservices.myspace.com/services/media/musicplayerxml.ashx?b=';

		// -- [Application] -------------
		var id = document.getElementById(ID_LINK_ID).href.match(/friendID=(.*)/).pop();
		var url = XML_BASE_URL+id;

		/***
		End of Code by brazil
		***/

		function processResponse(text){

			var tSplit = text.split('<?xml version="1.0" encoding="iso-8859-1"?>')[1];
			var profile =  new XML(tSplit);
			/*var jsonTracklist = {

			  'title':'ZOMGBBQ!', 
			  'tracklist':[]

			}

			var i=0;
			for each(var song in profile.playlist.song){
				
				jsonTracklist.tracklist[i] = {
					
					'track':{

						'location': song.@durl,
						'image':song.@imagename,
						'title': song.@title,
						'creator':'múm',            
						'annotation':'',
						'info':'http://www.myspace.com/mumtheband'    

					}
			          
			    };
				i++;
			}
			
			jsonTracklist = jsonTracklist.toSource().toString().split('(')[1].split(')')[0];
					unsafeWindow.console.log(jsonTracklist);*/
			//var songs = profile.playlist.song;
			//unsafeWindow.console.log(songs);
			var i=0;
			var tracks = '';
			for each(var song in profile.playlist.song){

				tracks += '<track>'+
								'<title>'+profile.name+'</title>'+
								'<creator>'+song.@title+'</creator>'+
								'<location>'+song.@durl+'</location>'+
								'<image>'+song.@imagename+'</image>'+
								'<info></info>'+
								'<identifier>'+i+'</identifier>'+
							'</track>';
				i++;

			}
		
		var pathN = document.title.split('MySpace.com - ')[1];
		var tList = '<?xml version="1.0" encoding="UTF-8"?><playlist version="1" xmlns="http://xspf.org/ns/0/">'+
						'<title>'+pathN+'</title>'+
						'<creator>'+pathN+'</creator>'+
						'<annotation></annotation>'+
						'<info></info>'+
						'<location></location>'+
						'<identifier></identifier>'+
						'<image></image>'+
						'<date></date>'+
						'<trackList>'+
							tracks+
						'</trackList>'+
					'</playlist>';
				
			var newPlaya = document.createElement('embed');
			newPlaya.src="http://forboden.com/coding/flashtest/myspacealt.swf";
			newPlaya.width="438";
			newPlaya.height="283";
			newPlaya.id="newPlaya";
			newPlaya.pluginspage="http://www.macromedia.com/go/getflashplayer";
			newPlaya.type="application/x-shockwave-flash";
			newPlaya.scale="noscale";
			newPlaya.wmode="opaque";
			newPlaya.setAttribute("allowscriptaccess","always");
			newPlaya.setAttribute("allowfullscreen","true");
			newPlaya.setAttribute("flashvars","js_playlist=yes&playlist_url="+encodeURIComponent(tList)); 

			var origPlaya = document.getElementById('profile_mp3Player');
			var origPlayaC = origPlaya.firstChild;

			/*var sS = document.styleSheets;
			var newPlayaStyle = '';
			for(var i=0;i<sS.length;i++){

				if(!sS[i].href){
					var cR = sS[i].cssRules;

					for(var j=0;j<cR.length;j++){

						var o = cR[j].selectorText;
						var nR = new RegExp('object$');
						if(nR.test(o)){
						
							newPlayaStyle += cR[j].cssText.split('{')[1].split('}')[0];
							
						}

					}

				}

			}*/
			
			//http://blog.firetree.net/2005/07/04/javascript-find-position/
			  function findPosX(obj)
			  {
			    var curleft = 0;
			    if(obj.offsetParent)
			        while(1) 
			        {
			          curleft += obj.offsetLeft;
			          if(!obj.offsetParent)
			            break;
			          obj = obj.offsetParent;
			        }
			    else if(obj.x)
			        curleft += obj.x;
			    return curleft;
			  }

			  function findPosY(obj)
			  {
			    var curtop = 0;
			    if(obj.offsetParent)
			        while(1)
			        {
			          curtop += obj.offsetTop;
			          if(!obj.offsetParent)
			            break;
			          obj = obj.offsetParent;
			        }
			    else if(obj.y)
			        curtop += obj.y;
			    return curtop;
			  }
			var newStyle = 'left:'+findPosX(origPlayaC)+'px;top:'+findPosY(origPlayaC)+'px;position:absolute;';
			
			newPlaya.setAttribute('style',newStyle);
			origPlaya.removeChild(origPlayaC);
			origPlaya.appendChild(newPlaya);

		}
				
		GM_xmlhttpRequest({
			method : 'GET', 
			url : url, 
			onload : function(res){
			
				processResponse(res.responseText);
				
			}
		});

	}
	catch(e){
	
		//unsafeWindow.console.log(e);
	}
})();