Automatically tag your music collection with metadata from
Last.fm.
what it is
A while back Last.fm released
a command line tool to retrieve metadata for an arbitrary mp3 from
their
new fingerprint database. I tried it yesterday and it seemed way better
than
MusicBrainz. So, as a person with a lot of random mp3s, I
cooked up a script for retagging entire folders of songs.
Some neat things used in the script:
- id3lib-ruby for
handling mp3 tags
- Text for calculating
Levenshtein distance to the nearest correct genre name—amatch is a compiled version
of the same thing, but not Windows-compatible
- the incredibly comprehensive Last.fm
API
- XSD::Mapping for parsing the XML responses (better than
Hpricot for small, well-formed documents)
A handy feature in the script is the ability to add the top 10
tagged
genres to the comment field, so you can use iTunes or Foobar smart
playlists for fancier multi-genre sorting. This is similar
to lastfmtagger,
but not Mac-specific.
demo
Before running sweeper
--genre:
$ id3info 1_001.mp3
*** Tag information for 1_001.mp3
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz
After:
$ id3info 1_001.mp3
*** Tag information for 1_001.mp3
=== TPE1 (Lead performer(s)/Soloist(s)): Photon Band
=== TIT2 (Title/songname/content description): To Sing For You
=== WORS (Official internet radio station homepage): http://www.last.fm/music/Ph
oton+Band/_/To+Sing+For+You
=== TCON (Content type): Psychadelic
=== COMM (Comments): ()[]: rock, psychedelic, mod, Philly
*** mp3 info
MPEG1/layer III
Bitrate: 128KBps
Frequency: 44KHz
quickstart
Documentation is here,
but for OS X:
sudo port install id3lib
sudo gem install sweeper
sweeper --help
Linux is similar to the above, depending on your distribution.
On Windows, you can just download a zipfile from the Rubyforge page and
extract sweeper.exe to somewhere in your path.
I expect this to be eventually replaced by an official Last.fm tool,
but for now, patches are welcome. It would be especially nice if
someone could write a tutorial to help non-Ruby people install the
script.
If you are going to contribute
some code, grab
the SVN checkout from Fauna, since the gem doesn't ship with the
test mp3s.
SVN, I know—how embarrassing!
April 13, 2008