Closed nhorlock closed 1 year ago
Actually, it is worse than I thought. The spurious changes do get applied (though not always, it seems) Here is a example of data after update has been applied beet ls -f '$album: $title $albumtype {$albumtypes}' artist:dead can dance Aion: The Arrival and the Reunion a {['a', 'l', 'b', 'u', 'm']} Aion: Saltarello a {['a', 'l', 'b', 'u', 'm']} Aion: Mephisto a {['a', 'l', 'b', 'u', 'm']} Aion: The Song of the Sibyl a {['a', 'l', 'b', 'u', 'm']} Aion: Fortune Presents Gifts Not According to the Book a {['a', 'l', 'b', 'u', 'm']} Aion: As the Bell Rings the Maypole Spins a {['a', 'l', 'b', 'u', 'm']}
Closing this... I just stumbled upon a discussion in 1.6.1 abouthow to manually fix this. Sorry for the duplicate report.
For future reference, this is how to fix the problem (once you are updated to 1.6.1): https://github.com/beetbox/beets/pull/4582#issuecomment-1445023493
Running
beet update
(including pretend mode) shows confused output that suggests that the albumtype and albumtypes fields are likely to be corrupted.More specifically it would seem that albumtypes is a string but is being treated like a list of strings. As such the albumtype is being set to albumtypes[0] (a logical change) If we have
albumtypes = ["album", "remix"]
andalbumtype = 'remix'
this would correctly set the albumtype to be "album" instead of "remix".Instead
albumtypes
is a ';' separated string list of albumtypes."album; remix"
and the update command is trying to set albumtype to albumtypes[0] i.e. 'a'Problem example
Led to this problem:
To put context to that, here is the tagging in place on those tracks.
It is probably worth noting too that the change does not appear to succeed if -p is not specified. The database_change event is triggered but the data does not change to match the "predicted" output shown and in fact remains the same.
My guess is that the informational output is wrong (it is run in a loop in
show_model_changes
calling_field_diff
which has no special handling. Thestore
method that gets called to do the update is being called with different data. (using aprint
insidedb.py
Model::store
we get.I may try to work out a fix but I'm new to beets and still working out how things hang together.
Setup
My configuration (output of
beet config
) is: