There are two separate concerns here, no?
-
For two given artists, are they actually equivalent?
-
For equivalent artists, what is the naming convention?
Thanks to MusicBrainz, concern (1) seems straightforward to answer: just look up the “also performs as” info and cache it locally in the beets DB. Rather than hacking new attributes onto albums or whatnot, a new table would make sense to me: maybe a map from each artist ID to its list of alias IDs. Though since these relationships are symmetric, such a structure would be redundant space-wise but efficient time-wise for lookups. Alternately, you could store the data as a list of sets… This seems like the start of creating an artists table in the DB, which would be good to keep minimal, but in this circumstance it would be helpful to have.
For concern (2): the new artist equivalence table could also have a column for “canonical artist name” which could be a vanilla string (e.g. “Vektroid”), or a template expression (e.g. “Vektroid aka ${alias}”). This would give total control over how the naming is done per artist (no hardcode heuristic will please everyone here), at the expense of the naming rules being hidden in the DB rather than declared in the config.yaml
directly. Alternately, the plugin could offer nothing here, and instead recommend the existing rewrite plugin for such purposes. Simply identifying and reporting equivalent mb_artistid
s within a collection would go a long way toward helping to maintain a sensible rewrite list. Though artist name clashes (multiple artists with the same name but different MusicBrainz IDs) would remain a problem with this strategy.