Category: projects

Last.fm Seasonal Impact Indices

Everyone’s experienced that thing where you’re listening to something, and you think to yourself, “Holy shit does this remind me of fall 2004.” How strongly certain music is correlated with certain periods of your life depends on many things, including but probably not limited to when you first heard it, when you first liked it, and when your listening to it was most highly concentrated. So, for instance, in my case, most Destroyer albums will recall times and places that are vague at best, and that depend mostly upon first exposure rather than concentration — this as a result of the fact that I listen to every Destroyer album all the time, approximately.

Blueboy’s Unisex, on the other hand, will probably always remind me of the winter of 2006-7, as I listened to it for the first time that season, nine additional times within that season (racking up about 150 tracks listened, according to Last.fm), and virtually never again once spring hit.

Ever since I began submitting listening data to Last.fm in November of 2004, I’ve wondered whether I’d ever enjoy direct access to all those numbers. Then came Last.fm Extra Stats, mercifully collecting all my listening data for me in a tab-separated file that can be pulled into Excel and manipulated to my heart’s content. Here, as a small example of the data, are my top ten artists (by tracks listened) from winter 2006-7, along with total listens for each artist (since November 2004) (now that I’m finally getting around to publishing this post, all the following data is very old):

Winter 2006-7
Artist Winter (S) ↓ Total (T)
Trans Am 163 163
Blueboy 148 163
The Lucksmiths 69 105
Ratatat 50 126
The Moldy Peaches 49 51
White Flight 36 41
Television Personalities 35 35
Beach House 35 64
Revolving Paint Dream 32 58
RJD2 31 52

Now for some methodology. Continue reading “Last.fm Seasonal Impact Indices”

One Response

Elusive YouTube Feeds

Despite being one of the poster-children for the 2.0nd and most recent wave of hyperbolized internet enthusiasm, YouTube does a shitty job of making feeds available. “We offer a bunch of different RSS feeds,” they say, “covering tags, users, popular videos, and even the YouTube Blog.” No shit! That list of feeds is, believe it or not, totally comprehensive of all that they provide easy access to. This is probably an artifact of their pre-Google days, when they were losing millions of dollars and couldn’t afford too many feed requests.

But I did some digging and found that you can easily get a developer key, which gives you access to YouTube’s API. This sounds a lot trickier than it is. Just go to your developer profile page, tell them why you want a key, and you’ve got it. With this key, you can access a number of different XML feeds. Visit the developer introduction and documentation to generate the url for the feed you’re after. For instance, I want a feed of the videos I’ve marked as favorites, so I use this:

http://www.youtube.com/api2_rest?method=youtube.users.list_favorite_videos&dev_id=MyY0utu8eD3v1D&user=echosmyron

That’s not my real Dev ID — YouTube is obviously protective of these things so I don’t want to piss them off. But what you get is an XML file that is structured like this:

<ut_response status="ok">
 <video_list>
  <video>
   <author>limpty</author>
   <id>npvSMfhjt4A</id>
   <title>Joanna Newsom "sadie" live</title>
   <length_seconds>356</length_seconds>
   <rating_avg>2.65</rating_avg>
   <rating_count>79</rating_count>
   <description>
    at easy street seattle. i filmed it brah. i have photos of joanna at smokyshots.com
   </description>
   <view_count>15869</view_count>
   <upload_time>1149446513</upload_time>
   <comment_count>21</comment_count>
   <tags>joanna newsom folk harp drag city</tags>
   <url>http://www.youtube.com/?v=npvSMfhjt4A</url>
   <thumbnail_url>
    http://sjl-static13.sjl.youtube.com/vi/npvSMfhjt4A/2.jpg
   </thumbnail_url>
  </video>

Pretty awesome! The <id> value of npvSMfhjt4A can just be thrown into the watch url (http://www.youtube.com/watch?v=npvSMfhjt4A), and there it is! Now it’s just a matter of re-writing lastRSS a bit to strip out the <id> field and tossing that into YouTube’s embed code. Which I then intend to implement as a single dynamic video in the sidebar.I fucking nailed it.

One Response

Hotness 1.6.c.1

Totally warranted subversioning!

My foray into MP3Toys was ultimately short-lived, brought to a halt when I found what people were doing with Single Column Playlist for foobar, particularly the playlist-embedded album art. Back in the foobar saddle, I also gave in and tried out the “official” Play Count component, which I had avoided for so long because it didn’t support %FIRST_PLAYED%, and because I wasn’t sure I wanted my playback statistics only kept in the database — even though writing them to the files posed a lot of trouble as well. Turns out, playback statistics stored by the official component are less sensitive to changes to the files it’s keeping track of than the unofficial one, which means I only have to be a little careful to keep all my stats intact, while being able to play and track files that I’m still seeding.

This, along with the invaluable $cwb_datediff() function provided by Bowron’s new foo_cwb_hooks component, called for a rewrite to the hotness code, which had been stagnating in some marginally compatible 1.5 version since May. After severely trimming the code down and robusting things up, I thought of a new and totally non-arbitrary way to soften the blow hotness scores receive when songs are played. I hated seeing them leap to 100 every time, and this new softening method makes so much sense, utilizing existing baseline calibrations to keep things a lot more interesting. How anybody tolerated the old method is beyond me.

Anyway, here it is.

I also dug up a lot of old screenshots this week and I’m planning a nostalgia-fueled retrospective in the near future.

Leave a Comment

Weekly Top Album Art

Wow, I can’t believe I was able to do this.

http://www.kilobitspersecond.com/topalbumart.php?user=

Just tack your last.fm username onto the end of that url to generate the cover art for your most listened-to album of last week. Pretty cool.

Bands and albums with ampersands don’t work at the moment. urlencode() doesn’t seem to do the trick. Any theories?

One Response

Setting up a BitTorrent Tracker

So I’ve spent the last couple days trying frantically to get a BitTorrent tracker installed, mostly for the use of my internet acquaintances, their friends, and my friends. Really just a dedicated alternative to YouSendIt and all those other bullshit file sending sites that always have one catch or another.

So, just as a test, I installed OpenTracker, a bare-bones tracker that has no interface, just an announce url. It worked, to my amazement, with minimal effort, but the fact that anybody with the announce url could use it bothered me, and the idea of having searches and invites and requests and all the other bells and whistles of ‘real’ torrent trackers was too tempting and, I felt, within my reach.

Continue reading “Setting up a BitTorrent Tracker”

2 Responses

AllMusic’s Tone Intersections

In a previous post about A Flat Hierarchy for Subjective mp3 Tags, I described the arduous and marginally rewarding task of tagging my entire library with as many ‘tones’ tags as AllMusic was able to provide. With foobar2000 0.9 final now less than a week away, these tags may prove useful soon enough. But a few weeks ago, impatient and curious, I decided to put them to another use:

tones intersection chart

By creating a tones/tones tree structure in foobar, I was able to count how often each ‘tone’ intersects with every other ‘tone.’ What you see above is the beginning of that data collection, which I ultimately planned to analyze in…some way.

After Googling around for ideas on tag clustering, I came across gCLUTO, a free piece of software that would, miraculously, do exactly what I needed — namely, magically figure out how best to cluster each tag with related tags. I figured four clusters would be a comfortable number, based on earlier reading I had done on a two-axis theory of musical emotion (intense/relaxed and positive/negative).

topographical cluster visualization

Unfortunately, my computer simply couldn’t handle even constructing and deconstructing the foobar tree without freezing up for about 45 minutes each time. Plus, collecting all this data would have meant hours and hours of work, for a goal whose benefits weren’t very clear to me at all, as well as a halt in incorporating new downloads into my library. It was a pretty exciting couple days while it lasted though.

3 Responses

bag 2.0 (part 1)

Well, since I don’t usually have much to write about anyway, why don’t I chronicle the making of my new messenger bag?

bag 1.0This is my current bag. I sewed it with a needle and thread by hand in the summer of 2003. I don’t know how many dozens of hours it took me to make. I used duck cloth from Jo-Ann Fabrics that ended up being too light (you can almost ball the whole thing up into your hand), there are massive fraying problems, it’s not quite big enough, the snaps on the left pocket are virtually useless (half of one is missing), and the shoulder strap is too long (meaning when I ride my bike with it the bag keeps getting caught on my ass). It’s served me well for two years, but last year I decided it was time for a new one, which I’m just now beginning.

Continue reading “bag 2.0 (part 1)”

2 Responses