This is a conversion of Ned Batchelder's id3reader.py from Python 2 to Python 3.
I've made the minimum changes to get it working in Python 3, mainly to do with the different handling of byte strings. This is a quick hack, and I don't claim any credit for the code — Ned did all the hard work.
Most of my mp3 tags are ID3v2.3, with a small number having 2.4 tags. I've also tested it with the ID3v1 test pack, available at Example tags. It hasn't been tested with ID3v2.2 tags, but should work fine.
id3reader_p3.py is made available under the same terms as Ned's original:
The code in id3reader_p3.py is in the public domain. Do with it as you please.