On Thu, 2008-05-15 at 17:11 -0600, John Krukoff wrote: > On Thu, 2008-05-15 at 15:35 -0700, max wrote: > > On May 15, 6:18 pm, MRAB <[EMAIL PROTECTED]> wrote: > > > On May 15, 9:00 pm, max <[EMAIL PROTECTED]> wrote: > > > > > > > you're right, my java implementation does indeed parse for Id3v2 > > > > (sorry for the confusion). i'm using the getrawid3v2() method of this > > > > bitstream class (http://www.javazoom.net/javalayer/docs/docs0.4/ > > > > javazoom/jl/decoder/Bitstream.html) to return an inputstream that then > > > > i buffer and parse. apologies if i misrepresented my code! > > > > > > > back to python, i wonder if i'm misusing the mutagen id3 module. this > > > > brief tutorial (http://www.sacredchao.net/quodlibet/wiki/Development/ > > > > Mutagen/Tutorial) leads me to believe that something like this might > > > > work: > > > > > > > from mutagen.mp3 import MP3 > > > > id3tags = MP3(urllib2.urlopen(URL)) > > > > > > > but this gives me the following TypeError: "coercing to Unicode: need > > > > string or buffer, instance found". does this mean i need to convert > > > > the "file-like object" that is returned by urlopen() into a unicode > > > > object? if so, do i just decode() with 'utf-8', or is this more > > > > complex? as of now, doing so gives me mostly "No such file or > > > > directory" errors, with a few HTTP 404s. > > > > > > [snip] > > > I think it's expecting the path of the MP3 but you're giving it the > > > contents. > > > > cool, so how do i give it the path, if not in the form of a URL > > string? maybe this is obvious... > > -- > > http://mail.python.org/mailman/listinfo/python-list > > It doesn't look like you can, with mutagen. So, time to find a different > library that supports arbitrary file objects instead of only file paths. > I'd suggest starting here: > http://pypi.python.org/pypi?%3Aaction=search&term=id3&submit=search > > Possibly one with actual documentation, since that would also be a step > up from mutagen. >
After a bit of time looking around, looks like nearly all the python id3 modules expect to work with filenames, instead of file objects. I can't vouch for it, and the documentation still looks sparse, but this module at least looks capable of accepting a file object: http://pypi.python.org/pypi/tagpy Looks like it'd be a challenge to build if you're on windows, since it depends on an external library. Alternately, you could probably create a subclass of the mutagen stuff that used an existing file object instead of opening a new one. No idea what that might break, but seems like it would be worth a try. As last ditch option, could write the first few kb of the file out to a temp file and see if mutagen will load the partial file. -- John Krukoff <[EMAIL PROTECTED]> Land Title Guarantee Company -- http://mail.python.org/mailman/listinfo/python-list