Like many of you, I've had my music for decades now, and my playlists also. A few years ago I uploaded my favorite songs from my Favorites playlist to Google Music, and now I want to migrate back to local again. I have locally all the songs that are on Google Music, but the latter won't export the playlist at all, and I don't want to go looking for all the songs one by one, so I figured beets can help with this.
I managed to export a list of Artist - Title from Google Music, and I figure I can write a plugin to query beets' database for the name and show me a few file paths so I can pick. That should be easily doable, yes? (I'm a professional Python developer, so I'm handy with Python).
Secondly, I wrote a new playlist spec, which I call Universal Playlist, because of exactly this problem. This playlist format includes MusicBrainz IDs, hashes, etc as well as artist name and title. I have written a small utility to convert from PLS to UPL, but the opposite is harder, because I need a database that's indexed by both the metadata that already exists in ID3 tags and things like the SHA/MD5 hash of the song, etc.
My second question is: Does beets allow arbitrary, indexable metadata into its database? I would like to write a plugin that would, on song import, read all the metadata and add the MBID, SHA/MD5/etc hash to the database, so I could quickly get a song by its SHA hash later on. Is this possible without changing the beets core?