Been using Beets
I have a new Music Playing Device coming to my house in a month or so, so I've been taking some time to organize my music collection and combine it with my husband's to create a Household Music Heap which is all correctly tagged, non-DRM MP3s. This is a lot of work!
I've used Foobar for about six years now, so I've had plenty of experience editing MP3 tags and messing with genre and rating tags and so on. Doing this manually for the whole collection - so that it would all be sortable and filterable on the New Device - felt like a waste of time.
I was glad to learn about Beets, a python library that allows you to automate tag correction for your entire music collection at once.
Basically, a Beets import will go to some location, grab the music there, attempt to organize it by artist and album, and move it to some new location where it will create a completely clean and correct folder structure for all your tracks. It can also identify your music as being from specific releases, then correct the tags on those tracks to make sure they've got the correct album name, album artist name, date, track numbering, etc.
I spent some very late nights over the last week learning to do this python shit and slowly correcting all the tags on all the MP3s my husband and I own. I also converted file formats for a lot of my music, and created a folder elsewhere containing all the DRMed tracks that Beets was unable to convert. This has given me a list of music that I need to replace/buy new versions of if I want to use it in the future without iTunes. (Surprisingly little of my music, it turns out, was purchased from iTunes over the years. I was really surprised!)
I highly recommend using this tool! With plugins it can fetch album art, fetch lyrics, find duplicates, and more. I don't know much about Python, but I was able to figure out enough of what I needed to do thanks to the very good Beets documentation. If you want to label your music and don't want to spend forever typing things down yourself, this is probably the best way to do it.
Beets is going to look at Musicbrainz to try and ID all your tracks, but there are apparently other plugins that allow it to draw data from different sources as well. Even if a lot of your collection is so obscure that it's not on Musicbrainz, it's probably still worth trying to clean the easy stuff up with Beets. You can run Beets in a mode where it will completely skip moving or tagging tracks which it doesn't immediately recognize - and ask it to write a log of the tracks it skips, too. This would be a great way to just build a list of all the "hard stuff" in your collection for you to tackle manually later.
One thing is that Beets does kind of expect and encourage you to walk it manually through the things it doesn't immediately recognize. I should have embraced this philosophy more fully when I started using the tool, since I made a few mistakes in the beginning - identifying releases wrongly - which I then wasted a lot of time correcting. I think if you're ready to use this tool, you should set aside plenty of time to manually hunt down and input IDs for releases that Beets does not easily ingest. Doing it right the first time means that you will never have to do it again.
We had a lot of songs Beets did not recognize. It didn't know about The Singing Rainbow's performance of "I'm a Reptile," for example:
Not a joke: it has a hard time with some Steam soundtrack releases. Cult of the Lamb in particular confused it - Steam just puts all the soundtracks from all DLC releases into the same undifferentiated folder with sequential track numbering, even though each soundtrack has its own release ID on Musicbrainz. Beets wasn't able to figure this out and I had to edit the tags manually.
I do recommend it, though! I certainly never would have finished this if I'd been trying to do it by hand. Now all my music is pretty much tagged. It's great!!!!