Ripping an audio CD in Python/Java
Question
I have about 500 cd's that need backing up, they contain old sessions.
I need a library that can be used by either (Java / Python) to rip these cd's
It does not need to support 'nix and must support *Windows*
Bonus points given for a framework that can also handle metadata attached to tracks.
I have been looking for ages now, I cannot find anything and this question is on-topic
We feel the best Stack Overflow questions have a bit of source code in them, but if your question generally covers … software tools commonly used by programmers … then you’re in the right place to ask your question!
Edit:
Still not found freeware libraries that support audio-cd ripping
Solution
I can't find anything on Windows that has a direct API either, but you might get what you want by search for "command line". I found things like:
Which you could then integrate into either a java or python process which managed the larger conversion process. You could then use a tool like Mutagen to add the appropriate audio metadata for your recordings.
Also, keep in mind that if you can find some way to mount the audio CD as a data disc (I don't know what current Windows behavior is, but MacOS X can do this, for example), you can just copy the CDA files from the disk and use a larger variety of tools and libraries to do the file type conversion.
OTHER TIPS
Java has a sound api http://www.oracle.com/technetwork/java/index-139508.html
This site has some good resources, examples and source code: http://www.jsresources.org/examples/ And this:
that read audio CDs directly to extract the sound data. The examples utilize the package javax.sound.sampled.
If I could I would have done a "let-me-google-that-for-you-link"...
Foobar2000 seems to do what you want and has an SDK. You could use Python CTypes although truthfully I don't think you will need to do any programming for what you want to do.
Addendum:
Python Option:
You might want to also check out: http://code.google.com/p/quodlibet/ . Its written in Python and is cross platform with some rather powerful tagging capabilities (thanks to Mutagen which is free). However (from a cursory glance) it does not look like it supports ripping but you could use another tool for that.
Java Option:
I haven't tried atunes but it looks promising: http://www.atunes.org/?page_id=6 . According to their site there is a windows installer but "For ripping, lame, flac or oggenc must be installed."
I'm pretty sure the the Windows Media Player COM API includes ripping functions. Semi-guaranteed to be on your Windows computer. Here's the C++ IWMPCdromRip interface (MSDN)
Shot in the dark Python solution would be pywin32 for COM added to the WMP COM API - should get you what you want, though I'm also curious why you wouldn't want to just rip using WMP (or something else) and then post-process the resulting files as suggested by Adam Gent. With 1 or 500+ CDs, I'd expect the big time sink to be physically loading the media and waiting for it to rip, not operating the buttons for ripping.
I haven't done too much with COM under either Java or Python (I don't use Windows for dev much any more), but years ago it was easy enough from C/C++ using the Windows gcc port (so no help from MSVS/CLR), Pascal, etc., so I can't imagine it wouldn't be available in Java (and of course it's there for Python using pywin32).