beetbox / beets

music library manager and MusicBrainz tagger
http://beets.io/
MIT License
12.92k stars 1.82k forks source link

Implement multi-value genres tag #5426

Open ibrokemypie opened 2 months ago

ibrokemypie commented 2 months ago

Description

Resurrects #4751. Rebased just the genre field changes on to master.

"Adds support for setting the genre tag to be either a single or multi."

To Do

github-actions[bot] commented 2 months ago

Thank you for the PR! The changelog has not been updated, so here is a friendly reminder to check if you need to add an entry.

kergoth commented 1 month ago

That makes sense, thanks for the clarification!

On Friday, September 20, 2024, Rylee @.***> wrote:

@.**** commented on this pull request.

In test/test_library.py https://github.com/beetbox/beets/pull/5426#discussion_r1769453549:

     self._assert_dest(b"/base/Pop")
 def test_first_skip(self):
  • self.i.genres = "Pop; Rock; Classical Crossover"
  • self._setf("%first{$genres,1,2}")
  • self.i.sub_genres = "Pop; Rock; Classical Crossover"
  • self._setf("%first{$sub_genres,1,2}")

The tests are testing the %first{} function extracting from a string split on ; . Genres was the tag used for the tests initially, but now genres is a MULTI_VALUE_DSV which is separated by null characters instead.

Rather than rewriting the tests both to the full %first{text,count,skip,sep,join} format to specify the null character separator, which would be changing whats being tested, the original author just swapped out the genres tag for a nonexistent sub_genres tag which would continue to work as a standard string for %first to act on.

— Reply to this email directly, view it on GitHub https://github.com/beetbox/beets/pull/5426#discussion_r1769453549, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAACJFY5YIKQOCKXT67PTHLZXTKQRAVCNFSM6AAAAABOPR74YGVHI2DSMVQWIX3LMV43YUDVNRWFEZLROVSXG5CSMV3GSZLXHMZDGMJZGYZDIOBSHE . You are receiving this because you commented.Message ID: @.***>

-- Christopher Larson @., @. Principal Software Engineer, Embedded Linux Solutions, Siemens Digital Industries Software