Use the primary artist for upload destination folders
ci / module boundaries / boundaries (push) Successful in 7s
ci / api / api (push) Successful in 33s
ci / db / db (push) Successful in 1m47s

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
mrleo1nidandClaude Sonnet 5.5 committed 2026-11-03 23:14:48 +03:00
1 parent 3edbf489a3
commit 5d0decbb2a
3 files changed
+19 -2

No files matched your search

+12 -1
View File
@@ -81,6 +81,17 @@ type Meta struct {
Disc *int `json:"disc,omitempty"`
}
// PrimaryArtist — первый исполнитель альбома (при пустом album artist — трека; « & » имя не делит): «A;B» и «A feat. B»
// лежат в папке «A», как и в каталоге, где альбом принадлежит первому исполнителю.
func (m Meta) PrimaryArtist() string {
for _, field := range []string{m.AlbumArtist, m.Artist} {
if credits := meta.SplitArtists(field, func(string) bool { return true }); len(credits) > 0 {
return credits[0].Name
}
}
return ""
}
// Fields — значения для шаблона пути.
func (m Meta) Fields() meta.Fields {
num := func(p *int) string {
@@ -90,7 +101,7 @@ func (m Meta) Fields() meta.Fields {
return strconv.Itoa(*p)
}
return meta.Fields{
Artist: m.Artist, AlbumArtist: m.AlbumArtist, Album: m.Album, Title: m.Title, Genre: m.Genre,
Artist: m.Artist, AlbumArtist: m.PrimaryArtist(), Album: m.Album, Title: m.Title, Genre: m.Genre,
Year: num(m.Year), Track: num(m.Track), Disc: num(m.Disc),
}
}