I’ve pushed out yet another version of TagPy. This time it is to mop up after some rather unhelpful default in TagLib. That is, unless you have the magic lines:

import tagpy.id3v2 as id3v2
id3v2.FrameFactory.instance().setDefaultTextEncoding(tagpy.StringType.UTF8)

in your code, the generic API tag.artist = u"*some funky unicode string*" will write Unicode tags as Latin1 if the previous ID3v2 tag was also Latin1-encoded. This will of course destroy your carefully crafted unicode string. Therefore I urge all users to include these lines in their code, in order to avoid such trouble.

All that’s new in 0.93 is the wrappers that make this call possible.

I tought about making the above code the default for TagPy, but I wasn’t sure whether that was the right thing to do, seeing as how this default would deviate from TagLib.