I figured out a major bug in the code that prevents reading all tags properly, which I've fixed, but there are also other issues that needs further attention, so I'm not posting an updated code until I'm much more certain the code works properly.

And I have issues with filenames that have Unicode in them... *sigh* not too surprising, but is surely one of those things that just have to be fixed in a general purpose class.