Shoutcast station direct link

By Mikael Svantesson Last update Apr 30, 2009 — Installed 275 times.

There are 3 previous versions of this script.

// ==UserScript==
// @name           Shoutcast station direct link
// @namespace      http://userscripts.org/users/88601
// @include        http://www.shoutcast.com/*
// @include        http://shoutcast.com/*
// ==/UserScript==

var station_url = 'http://yp.shoutcast.com/sbin/tunein-station.pls?id=';

function add_direct_links() {
	var station_directory_page = document.getElementById('StationDirectoryPage');
	if (!station_directory_page)
		return;

	var station_divs = station_directory_page.getElementsByTagName('div');
	if (!station_divs)
		return;

	for (var div in station_divs) {
		var e  = station_divs[div];
		var re = /([0-9]+)more/;

		if (e.id && e.id.match(re)) {
			var id = e.id.replace(re, '$1');

			var link_a = document.createElement('a');
			link_a.appendChild(document.createTextNode('Direct link'));
			link_a.setAttribute('class', 'fontstyle fontNormal');
			link_a.setAttribute('style', 'text-decoration: underline;');
			link_a.setAttribute('href', station_url + id);

			var link_div = document.createElement('div');
			link_div.appendChild(link_a);

			var containing = e.getElementsByClassName('dirTuneMoreDiv')[0];
			var more_box   = containing.getElementsByClassName('moreBox')[0];

			containing.insertBefore(link_div, more_box);
		}
	}
}

var page = document.getElementById('page');
if (page) {
	page.addEventListener('DOMNodeInserted', function(e) {
		if (e.target.id && e.target.id == 'StationDirectoryPage')
			add_direct_links();
	}, false);
}

window.addEventListener('load', function() {
	add_direct_links();
}, false);