Saturday, October 20, 2007

Songbird webpage api, bits, pieces, and notes

Imagine this scenario:

You are using your media player/browser, and you stumble across a track on a webpage. You preview it. You like it. There's no information on the webpage about where it's from, but luckily, the mp3 is tagged correctly.

You hit a button on your media browser, and bam! You can find popularity information on, prices on Amazon, full album information on Musicbrainz. suggests a similar artist. The process rinses and repeats. You get to stuff yourself full of delicious music.

To see (some of) this in action; fire up Songbird 0.3 or greater, play some tunes, and go explore.'s API is being used to render information that the page asked songbird about.

Look at the code underneath: simple javascript. More about songbird's webpage api. That's pretty easy looking.

Other notes and odds and ends:
Songbird now takes regular firefox extensions, (say hello to greasemonkey) and Freebase is awesome.

Basically: Freebase has an API, it's got data from wikipedia, and you can do things like search for episodes of Battlestar Galactica. Or shows produced by JJ Abrahams.

So, mix the power of Songbird's webpage api with the vast data of wikipedia/freebase, sprinkle in a few applications, and you've got something far more fun looking than a simple google maps mashup.

Throw in greasemonkey and operator, and you can scrape information from pages into microformats. Then export them.


moustaki said...


This looks really cool! But most of the mentioned data is available out there as linked data ( What worries me is that, for every new source of information you want to add (say you want to add data coming from Jamendo, for example) you have to hack the code, whereas I could directly used data available *on* the web (and not through APIs that need some hand-tuned code).

There is already a software, GNAT allowing you to find entry points for your audio collection on the Semantic Web. Then you can just browse data to aggregate fancy information (say hello to detailed geographic information about a particular band' location and to a map displaying your collection, for example :-) ). I'd be happy to help integrating such things into Songbird!


Dan said...

Heh, I was more trying to point out that you can mash up lots of things if you want.

* Songbird is the browser
* Application X is the music data agent/service
* Atom/Webservices/RDF is the data

moustaki said...

Oops sorry about that, I thought your post was more advocating a particular way of doing things :)

Anyway, I still think an RDF browser would be a cool thing to write for songbird, perhaps using ajar :) I'll give it a go!