In the Works 

Charts, hAudio support, new sites and more

We've just integrated another batch of great contributions from JP and some bookmarklet bug fixes. Check it out:

Top Grubbed Charts

Similar to the /latest dynamic XSPF urls, you can now access the most popular recent songs at http://www.playgrub.com/#xspf=http://www.playgrub.com/charts. You'll notice that the XSPF url is http://www.playgrub.com/charts. Feel free to use it as you see fit.

I've had some trouble getting Google App Engine to import all of the old data, so the charts should become more accurate as we move forward. You can take a look at the method used for generating the charts on Github.

Default hAudio Scraping

It's difficult to add custom support for every site, so JP added a default hAudio scraper. If there is no custom scraper Playgrub will look to see if the page is marked up with hAudio. If so, it will make a playlist from the songs it finds. You can test this out on the following pages:

http://www.playdar.org/demos/haudio.html
http://www.classicfm.co.uk/on-air/playlist/

If you know of any other hAudio sites, we'd love to hear about them and make sure we offer proper support.

New Supported Sites

Billboard
everyHIT
Mymusiclists
Wikpedia

The Wikipedia scraper is especially interesting. To get more info on how to use it, refer to the source. I've had a bit of trouble getting some of these to work with Chrome but we're on the case.

Nifty Permalink Note

As a great final touch to his holiday contributions, JP added a cool permalink icon for the latest version of any given playlist. Very cool.

Comments [1]

New Supported Sites

I just finished merging in support for a bunch of new sites built by jphastings. This is an awesome contribution and opens the door up to many more playlist sources. Check it out:

Absolute Radio Playlist
Kerrang Radio Playlist
NME Radio Playlist 
World Music Charts Europe
XFM Playlist

In addition to these great sites, JP did some work in the scraper engine and BBC Radio support. We've also been talking about better ways to get the community involved with site support. Feel free to chime in here: http://github.com/tobypadilla/playgrub/issues#issue/22

You can read more on JP's blog.

Comments [3]

Latest XSPF Links

A while ago jphastings suggested dynamic XSPF pointers to return the latest version of any given page/playlist. I've just implemented a raw version of this and it seems fairly useful.

If you want to get the latest XSPF for any given url just make a request like this:

http://www.playgrub.com/latest?url=http%3a%2f%2ftwitter.com%2f%23search%3fq%3d%2523playtapus

Just add the playlist target url to /latest?url= You'll probably want to encodeURIComponent as above if the url you're trying to look for has its own query string.

You can load the resulting XSPF into Playgrub (or Playlick) as usual. A couple examples where this is useful:

Latest #playtapus Twitter Search

http://www.playgrub.com/#xspf=http://www.playgrub.com/latest?url=http%3a%2f%2ftwitter.com%2f%23search%3fq%3d%2523playtapus

Latest Apple Top Charts

http://www.playgrub.com/#xspf=http://www.playgrub.com/latest?url=http%3a%2f%2fwww.apple.com%2fitunes%2fcharts%2fsongs%2f

If these links are not working for you, try cutting and pasting them into your browser's address bar (clicking seems to unencode parts of the url on some browsers).

Comments [1]

Amazon MP3 Links

Another quick one. Clicking on unresolved songs will now do an Amazon MP3 search for that song. It should be a good way to help fill out the playlists for more dedicated listening.

Comments [0]

Quick Updates

I recently pushed up a few bug fixes and the following new features... 

Toggleable Bookmarklet

If you close the bookmarklet then click it again from your bookmarks it will come back just as you left it. Music will continue to play when you close, just click the bookmarklet to get the controls back.

Playlick Scraper

I've added a scraper for Playlick. Playlick has been improving a lot lately and is a great place to create playlists. Now you can grub anything you make on Playlick for more permanent storage.

Twitter Scraping

Following up on what Jason Herskowitz and I started at Boston Hackday, J put up some more detailed instructions on how to scrape Twitter and play the results in Playgrub. To get started just use the following format for tweeting song names: 

★ artist name ♫ track name #playtapus (or any other hashtag/playlist name)

You can grub any Twitter page that has tweets formatted like that. It's useful to do a Twitter search for the hashtag to generate the complete playlist.

Filed under  //   music   playdar   playgrub  

Comments [0]

Playgrub Release 3

Welcome to another Playgrub release. Things have been pretty insane over here lately. I started working on Playgrub about a month ago and since then there's been a Last.fm alumni meetup in Seattle, Music Hack Day in Boston and two Playgrub product iterations (remember when there was no player?). Playgrub was even featured in ReadWriteWeb last week. It's all been very exciting but I think this version is the best yet.

New Index Player

Most of the work has gone into a new player based Playgrub index. The player itself looks much like the bookmarklet player but I've spent some time working on the play buttons and how everything is wired up. There are a bunch of bugs that got fixed and playlist loading has been sped up significantly. Maribel once again helped clean things up and put on a layer of polish.

XSPF URLs

In keeping with the convention started by Playlick, playlists are now uniquely referenced in the URL with a XSPF file. You'll notice each playlist has a unique #xspf=. This should make sharing playlists much easier. It also means you can open 3rd party XSPFs from a link or by hand.

Linked Playlist Title

The title of the playlist is now linked to the page of orign (or the <info> element in a XSPF). If you want to find out more about any particular playlist, click the title and see where it came from in a new page.

Next/Previous Playlists

In the upper right corner of the player you'll notice forward and back buttons. These buttons page through the latest playlists submitted to Playgrub. There's much more to do here, but it's a quick way to check out what others have been listening to.

New Share Button

Related to the unique URL, the new share will automatically copy a link for the current playlist to you clipboard. This is functionality I really liked in GitHub. Looking around I found the actual open source project they are using and put it to work.

There are some things that didn't quite make it into this release that I'd really like to get out soon, so stay tuned for more updates.

- Toby

Comments [1]

Supported Sites

Using the Playgrub bookmarklet on any of the following sites will create a playlist out of the listed songs. This list will be updated with new sites, better instructions and methods for adding new sites soon.

Last.fm
Playlick
Apple.com iTunes Charts
Musicbraniz Releases
Twitter
BBC Radio Programmes
Songkick Setlists
Billboard
FIQL Playlists
Grooveshark Playlist Export
Everyhit
Mymusiclists
Wikpedia
Absolute Radio Playlist
Kerrang Radio Playlist
NME Radio Playlist 
World Music Charts Europe
XFM Playlist
The Y! Radish

Comments [2]

Playgrub: New and Improved

Since we last spoke things have been moving forward pretty quickly at Playgrub. I've been doing some extreme all night hacking and a new version of Playgrub is ready just in time for Music Hack Day Boston. Here's a screencast of the new functionality with more spelled out below the fold.


View Full Screen

Of course the most obvious new improvement is actually being able to play music! :) Playgrub now has native Playdar support thanks to James Wheare and the great work he's done on Playdar.js. Using the bookmarklet on any supported site brings up a song list with the option to connect to your local Playdar instance. Once authenticated, Playdar will look for the songs and Playgrub will highlight the playable results. Clicking on the play button or a song name starts the playing.

One concept that was difficult to communicate (and I don't think is final yet) is "Library". Since only some of the songs in the playlist will resolve, there needs to be a way to toggle between all songs and playable songs. Tricky to make the ui clean when you're dealing with a half page bookmarklet. Turning Library on will show only playable songs. Please let me know if this works for you or needs to go back to the drawing board.

You'll also notice our nice new logos :) You can thank Maribel Made for the awesome work. Who knew grubs could be so cute?

Along with the logo, the Playgrub Homepage got a quick facelift. There's a lot more to do there but I think it looks better than the raw html it's replacing.

For all you Git junkies out there, you can check out a more detailed view of the progress with the commit list.

This update is just a small step to get things going in the right direction so expect more soon. As always, please come to #playdar on Freenode and have a chat!

- Toby

Comments [1]

Playdar: Linux For Music

As things ramp up here at Playgrub it seems like a good time to talk about the Playdar ecosystem, how we work with it and what all this crazy stuff is about. Playdar has been getting some great buzz lately (RWW, Wired, New Scientist) but even for those involved with the project it can be hard to describe what exactly Playdar does and how it benefits the average music fan. This post is focused more for developers and early adopters but hopefully it will shed some light on the great possibilities Playdar holds for the future of music.

Like Linux, Playdar started out as the vision of a lone mad scientist. In this case Richard Jones, the founder of Audioscrobber and Last.fm CTO. You can read about RJ's tribulations with the initial development of Playdar on his blog but the end result is that we have a great platform with lots of momentum moving forward.

Playdar is built in Erlang and offers a modular plugin system for adding functionality and providing access to music in a variety of ways. To give you an idea of what this means you have to know a bit about general Playdar workflow.

Playdar itself isn't much to look at. Actually it's a headless app that you run from the command line. The real magic comes from the Playdar modules, aka content resolvers. By default Playdar enables a local library module and local network module. You setup these modules to look for music in their respective domains (your machine, your network). Once a module finds a collection of mp3s, it indexes them based on the song metadata (artist and track name) and exposes a query interface to the Playdar core. At this point Playdar has a distributed database of songs that it can then proxy access to via the built in web server (Erlang MochiWeb).

With the metadata index and the mp3 serving localhost web server in place, a whole world of possibilities open up. Using the Playdar security model you can grant web pages (or any web friendly applications) access to your local music collection. It doesn't stop there though, they don't actually have to pull down the whole song index. The general mode of operation in the Playdar world is that web sites have lists of songs and each song's metadata is passed to the local Playdar instance to see if that song is available. Some nifty Javascript (Playdar.js) includes easy querying mechanisms and even web based playback using the SoundManger 2 library.

Once up and running, Playdar gives 3rd party web sites the ability to organize, search and listen to your music collection (even if that collection is stored across multiple machines).

Now with the foundation out of the way, let's get back to Playdar being the Linux of music :) If you're at all familiar with the Linux command line architectural philosophy you'll know that it's all about tiny pieces doing one thing well and talking to each other via a standard interface. This provides the ability to do very powerful things (like say, make a crazy Mapreduce clone in Bash) without having to "program" all the pieces yourself. The current Playdar ecosystem has very much embraced this idea. To quote James Wheare: "small pieces loosely joined innit".

If you take a look at the Playdar.org Demos page, you'll see a small but growing list of applications that support Playdar and fit very well into the small piece doing one thing well philosophy. At the base you have Playdar itself. On top of that you have a few different players to choose from. Playlick, Player.Playlick and Spiffdar.

These apps all work with Playdar as mentioned above via the Javascript interface. Pretty cool, but that's not all. They also expose their own interface (via the URL) for loading XSPF playlists. XSPF is a standard XML based playlist format that allows you to create lists based on song metadata without needing actual file paths. It's a perfect fit for Playdar. It also opens the door to another layer of application for creating the XSPFs.

Enter Playgrub. Playgrub is a bookmarklet that scrapes supported sites for music metadata, stores that data in a central repository and exposes the resulting playlists as XSPFs accessible through a REST interface. Playgrub then creates nice Playlick/Spiffdar URLs for loading the playlists. In the end you end up with a chain of operation like this:

Music site > Playgrub > Playlick/Spiffdar > Playdar (thanks Ralph for the ascii diagram ;)

Playgrub currently supports a handful of sites, but is architected in a way that makes it easy to add more.

Finally, to come full circle on the Linux analogy, one of the most exciting parts about Playdar is that everything is open source! Every project mentioned in this post is hosted on the outstanding GitHub and is ready for contribution. Check them out for yourself:

Playdar GitHub
Playdar.js GitHub
Playlick GitHub
Spiffdar GitHub
Playgrub GitHub

Comments [3]