Apply tag-changing plugins before the change is displayed.
- Dominant language
- Python
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 31
Description
Currently it seems that plugins which change the tag values (such as the zero plugin) happen after the tag deltas have been displayed to the user.
So this means that beets will sometimes report a change when there is none.
For example I use the zero plugin to clear the albumartist tag when it would otherwise be set to 'various artists'. Unfortunately, this means that when the 'mbsync' plugin runs, it sees that the old value is '' and the "new" value (from musicbrainz) is 'various artists', and beets displays a change for every VA track.
It seems like the flow should go:
old values→new value lookup→tag rewriting→display changes → save changes
whereas it is currently
old values→ new value lookup→display changes→tag rewriting → save changes.
Not sure if the tag change display is specific to the mbsync plugin or if this a general flow (and would therefore apply to 'beet update' as well)
Contributor guide
Research direction
Start by tracing the mbsync plugin flow and comparing it with the beet update path, since the issue questions whether the ordering is general. Verify when tag-rewriting plugins run relative to displayed deltas; done means rewritten values are reflected before changes are shown and false changes are no longer reported.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100