AHH MP3 Download

By Damien Gabrielson Last update May 7, 2009 — Installed 618 times. Daily Installs: 1, 0, 0, 0, 0, 1, 0, 1, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0

There are 1 previous version of this script.

// ==UserScript==
// @name           AHH MP3 Download
// @namespace      http://www.vatoland.com/
// @include        http://*allhiphop.com/multimedia/multimedialist.aspx?*app=multimedia__music*
// @description    Inserts download links for music items that have MP3s available
// ==/UserScript==
if (!GM_xmlhttpRequest) {
	alert('Please upgrade to the latest version of Greasemonkey.');
	return;
}
var downloadID = 'download';	// The starting name of the id for a created download link

// retrieve all links in document
var allLinks = document.evaluate(
	'//a[@href]',
	document,
	null,
	XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
	null);

for (var i=0; i < allLinks.snapshotLength; i++) {
	var thisLink = allLinks.snapshotItem(i);
	// determine if link is a music item
	if (thisLink && thisLink.href && (thisLink.href.indexOf('/stories/multimedia__music/archive/') >= 0) && (thisLink.id.indexOf('ItemTitle') > 0))
	{		
		// determine post id from url
		var postID = thisLink.href.substring(thisLink.href.length-13, thisLink.href.length-5);
		// create break and download link after ItemTitle link
		var downloadLink = document.createElement('a');
		downloadLink.setAttribute('id', downloadID + postID);
		downloadLink.setAttribute('href', '#');
		downloadLink.innerHTML = 'Download MP3';
		thisLink.parentNode.appendChild(document.createElement('br'));
		thisLink.parentNode.appendChild(downloadLink);
 
		GetAndSetDownloadLinkForPostID(postID);
	}
}

function GetAndSetDownloadLinkForPostID(postID)
{
	var xmlURL = 'http://allhiphop.com/extras/media.aspx?postid=' + postID;

	GM_xmlhttpRequest({
		method:"GET",
		url: xmlURL,
		headers: {
			'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3',
			'Accept': 'application/xml,text/xml'
		},
		onload:function(result) {
			var elementID = downloadID + postID;
			var parser = new DOMParser();
			var dom = parser.parseFromString(result.responseText, "application/xml");
			var items = dom.getElementsByTagName('item');
			var mediaURL = items[0].getElementsByTagName('mediauri')[0].textContent;
			var link = document.getElementById(elementID);
			if (link)
			{
				link.href=mediaURL;
			}
			else
			{
				GM_log('Could not locate element \'' + elementID + '\' and could not update url to ' + mediaURL + '.');
			}
		}
	});
}