Using CDDB to Fill ID3 Information in Existing MP3s?
masonbrown asks: "I've got about 2000 songs in my MP3 collection, using iTunes on the Mac. I'd love to fill in the empty ID3 tags such as Album Title, Date, etc. automatically from something like CDDB. Is there any way to automate this after the song is already in MP3 format (like going by Artist and Song Title)?"
I'd have to say no, at least with the current CDDB. Albums are non-uniquely identified by Artist and Title; for example, I have two versions of "US Forces" by Midnight Oil, from different albums. How is it going to be possible to distinguish between them without examining the audio data?
A long time ago I wrote a program which can, Among other things, re-tag mp3s based on the filename. This isn't exactly CDDB, but it's a start.
It's a perl program, so it Should run on OS X without modification, so long as you've got it's perl module requirements taken care of.
The program is called The MP3 Butler, and you can get it from http://babblica.net/mp3butler.
get 0wned. irc.w30wnzj00.com
Ok, so it's not Linux, but Musicmatch Jukebox has a feature called supertagging.
It takes the song title and does a fuzzy search and can fill in the ID3 tags. It can scan it from the filenames only, or from an existing tag. If your tags are nonexistent or screwed up, you can fix them. It can even fill in Album art and so forth. It's not completely automatic, but it is automated.
I kind of grudgingly like musicmatch, even though they must never have scanned in their CD collection with it. I mean, why do I have to click on the mouse for every single CD in my collection. Why not have a feature to start ripping the moment you insert a CD and eject it when it's done? Bozos.
You could script it with AppleScript, since you can set track properties and can do Internet connections, presuming that CDDB has some useful interface for scripting.
-- Two men say they're Jesus. One of them must be wrong. - Dire Straits
Tag & Rename is a relative cheap program for mass editing of ID3 tags. One of it's many features is that if you have a directory that contains all of the tracks of one album, in order, it will go to CDDB and retrieve the album/track information. It will of course create ID3 tags from this information if you desire.
The user interface takes a little getting used to, and it's a Windows program, and it's payware, but I had to respond to all the folks who say "it can't be done". Tag&Rename does it.
http://www.softpointer.com/tr.htm
A.
...bringing you cynical quips since 1998
Unless you've been living in a cave for the past two years you'd know that CDDB has been hijacked by Gracenote who've turned what was a nice, cooperative development, steadily built up by thousands of unpaid users into a private, commercial venture.
Nowadays, if you're developing commercial software that accesses the CDDB database you have to pony up licensing fees or look elsewhere.
That elsewhere is freedb. Check it out and use it instead of using CDDB.
"Accept that some days you are the pigeon, and some days you are the statue." - David Brent, Wernham Hogg
iTunes does have the ability to fill in missing information in some situations. For example, if you have an entire CD you ripped while offline, select the tracks and select "Get CD Track Names" from the Advanced menu. Everything from CDDB will be filled in, even if the songs still have "track1" etc as their names. Not sure if it can account for songs ripped from another encoder/incomplete albums.
MP3 Rage will allow you to not only get info from CDDB for already ripped MP3s, but handle all sorts of other tagging and renaming. Check it out
-ds
You can select any or all tracks you have ripped using iTunes and use the Get CD Track Names on them at any time. In iTunes 3 with the Keep iTunes Music Folder Organized option it will even update the file names and folder names and structure with the new information instantly.
"Reality is just a convenient measure of complexity" -Alvy Ray Smith
You probably want to use Applescript for this. Check out this page for a buttload of iTunes applescripts. For example the "Get CDDB Track Names" script will tag the selected tracks in iTunes with info from a CDDB webpage (that you searched for). And you can use the built-in applescripts to search the CDDB.
But honestly, with only 2000 songs, it would probably be less work to do it yourself, especially if you can use iTunes multiple-edit mode on tracks from the same album.
I hold it, that a little rebellion, now and then, is a good thing. -- Thomas Jefferson
Sure, you aren't going to get every invalid version, but who wants that anyway? For clean rips, you should be able to narrow the range down a lot. No, it won't be one-to-one like a CD, but that's okay too.
For someone who's done it already, check out MoodLogic. Hooks in with winamp too.
-Bill
SlashSig Karma: Excellent (mostly affected by moderatio
I wrote an ugly perl script that does this. It's based on the ideas from mp3cdd (you might be able to find this by searching google).
First you find all of the track lengths and build a fake TOC, assuming a 2 second lead-in. mp3cddb used file length and bitrate to guess the length. If you use VBR (or even ABR) this isn't accurate enough, so you need madtime from libmad. Feed this to CDDB (get the mod from CPAN).
You'll get a ton of results. Some will be totally unrelated, and some will be crap (all uppercase, all lowercase, genre missing, etc). Write a scoring function that weights all of the factors you care about, and then factor in the "distance" of the actual tracklists from your actual tracklists. Total time differences in seconds, or root mean squared differences, whatever gets good results. Pick the best.
Sanitize the result if you are using the CDDB info as a filename.
Now rename and mp3info your tracks from the data.
Um... no. There is no "CD ID number" burned into every CD. CDDB works by assuming that the track lengths are unique to a CD, which almost always works. That is why if you have the MP3s and you burn them to a CD, you can sometimes get CDDB to recognize it. Of course, that only works if all the different people you got your MP3s from ripped them with the same conventions, i.e. do you include the song gap, and if so, at the beginning or the end, etc.
What total rot. There's no such thing as a "CD ID". The CDDB ID is a one-way hash of the track lengths. Here is a comment from a script I wrote a few years ago.
It might be possible to create a CDDB ID from a full album of MP3s. But I think there's no hope if you have random MP3s from incomplete albums.
If you look in the "Tips-HOWTO", near the end, you'll see a pair of scripts, one spread over several lines, one a single line, that converts all the files in a directory to lowercase. In fact, here's the second one:
---- snip ----
for i in * ; do [ -f $i ] && mv -i $i `echo $i | tr '[A-Z]' '[a-z]'`; done;
---- snip ----
See how it uses tr to convert a range of characters? You can add any list of characters you like there. You can find out how to get your special characters by saying "man tr" at your prompt. As for finding out the codes for the characters, there you may need to do a bit of digging. Or you could copy and paste.
Hope this gets you somewhere. I find it useful just for lowercasing filenames brought across from DOS and Windows disks, and of course you can replace the "tr" bit with other commands.
Chances are that you have you songs named in Album-Artist-Song.mp3, Album/Artist-Song.mp3, or Album/Artist/Song.mp3 format. I wrote a program called Mp3Tagger that can import this mp3 name information into the ID3 tag. (It can also go the other way and rename an mp3 based on id3 tags.) It runs on Windows, Linux, and Mac OS X among others.
If you have a directory of MP3s that 1. is an album and 2. are in order, then you can use a program in the MP3::Info module distribution to do this. I've used it many times. Meng Weng Wong wrote the program, I wrote the module, and it's on the CPAN.
I think by default the program doesn't actually write the ID3 info to the MP3 file, but it's a simple edit to make that happen. You also need the CDDB module from the CPAN.
yeah, that would help me a lot. If I understood what that crazy command meant at all. Tell me how to do it in windows 2000, the os I use when not coding. Large crazy commands like that, which nobody understands are the reason that linux will never win the desktop. As far as I'm concerned, linux is good for coding, because it has all the good text editors and the free compilers and the nice terminal windows. I haven't seen anything else linux does better. Especially audio.
The GeekNights podcast is going strong. Listen!
Simple. You can't. There is no way to do that in Windows 2000.
Well, that's a little harsh. You could install Cygwin and run it under bash. But it sounds like you're too lazy to do that.
You could do this in a nix or you can install some software on your W2K box,e.g. Cygwin or some of the Window ports of nix commands. Being able to do things like write the above script I found pretty useful. I develop on windows for a living and having Cygwin, emacs and t.h.e. make my life so much easier. When I have to view every line which contains a certain string in all files with the same suffix in a folder tree it takes about 5 minutes to run in cygwin. Windows 'find' or 'search' command (depending on version) doesn't cut it.
E.G. to find all lines in all files *.bar in the tree starting at c:\dev which contain the string 'foo', and where 'foo' and 'bar' may be in any combination of upper and lower case, and where the C drive is mounted as
Of course you need to wipe the output file first, anyone know how to do this in windows without cygwin?
If all you want to do is surf the web then windows is OK (use Opera emulating IE), but then so is Linux (use Opera emulating IE). There are more games for windows and I can't run my excel/access vba apps on linux, but apart from that....
I hereby inform you that I have NOT been required to provide any decryption keys.
Using a program called "mp3ascd" to generate the CDDB ID, and another program called "rebot" to do the renaming based on the ID. (Both found on freshmeat). Not the best software in the world, and I had to make a shell script to glue them together. But it is entirely possible.
A couple years ago, I played with some software that would recognize a tune by analysing the actual music data. I can't remember what it was called, and I only had limited success with it, but I did have some success.
I'd like to play with said software again to see if it has matured.. Anyone know what it might be called?
S