Last.fm event shoutbox feed

By chopeen Last update Jun 14, 2008 — Installed 63 times.
// ==UserScript==
// @name          Last.fm event shoutbox feed
// @namespace     http://chopeen.blogspot.com/
// @description   This script adds an Atom feed to a shoutbox on every Last.fm event page
// @include       http://www.last.fm/event/*
// @include       http://last.fm/event/*
// @include       http://www.lastfm.*/event/*
// @include       http://lastfm.*/event/*
// ==/UserScript==

//--------------------------------------------------------------------------

var h3s;
var eventShoutbox;
var head;

// get Shoutbox element
h3s = document.documentElement.getElementsByTagName("H3");
for (var i = 0; i < h3s.length; i++)
{ 
    if ( h3s[i].getAttribute("class") == "shoutboxHead")
    { 
        eventShoutbox = h3s[i];
    }
}
// get HEAD element
head = document.documentElement.getElementsByTagName("HEAD")[0];

// if event shoutbox exists, ...
if (eventShoutbox)
{
    // ... add feed META element
    head.appendChild(getMetaElement());
    
    // ... add feed icon near the word Shoutbox
    eventShoutbox.appendChild(document.createTextNode(' '));  // space after the word Shoutbox
    eventShoutbox.appendChild(getIconElement());
}

//--------------------------------------------------------------------------

    // 
    // Returns feed META element
    // 
    function getMetaElement()
    {
        var meta;
        
        meta = document.createElement('link');
        meta.setAttribute('rel', 'alternate');
        meta.setAttribute('type', 'application/atom+xml');
        meta.setAttribute('title', 'Subscribe to shoutbox feed');
        meta.setAttribute('href', getFeedUrl(window.location.href));

        return meta;
    }

    // 
    // Returns feed icon
    // 
    function getIconElement()
    {
       var a;
       var img;
       
       img = document.createElement('img');
       img.setAttribute('src', 'http:\/\/cdn.last.fm/favicons/feed_small.gif');
       
       a = document.createElement('a');
       a.setAttribute('title', 'Subscribe to shoutbox feed');
       a.setAttribute('href', getFeedUrl(window.location.href));
       a.appendChild(img);
       
       return a;
    }

    // 
    // Gets feed URL
    // 
    function getFeedUrl(pUrl)
    {
        var feedUrl;

        feedUrl = '';
        feedUrl = feedUrl + 'http:\/\/tools.microformatic.com/transcode/'
        feedUrl = feedUrl + 'atom'
        feedUrl = feedUrl + '/hatom/'
        feedUrl = feedUrl + pUrl;
        
        return feedUrl;
    }