feat(tags): support multi valued tags like albumartists

This commit is contained in:
sentriz
2023-07-31 15:16:50 +01:00
parent 75761d98f6
commit 623d5c3709
5 changed files with 123 additions and 73 deletions

View File

@@ -351,35 +351,32 @@ func (m *tagReader) Read(abspath string) (tags.Parser, error) {
var _ tags.Reader = (*tagReader)(nil)
type Tags struct {
RawTitle string
RawArtist string
RawAlbum string
RawAlbumArtist string
RawGenre string
RawTitle string
RawArtist string
RawAlbum string
RawAlbumArtist string
RawAlbumArtists []string
RawGenre string
RawBitrate int
RawLength int
}
func (m *Tags) Title() string { return m.RawTitle }
func (m *Tags) BrainzID() string { return "" }
func (m *Tags) Artist() string { return m.RawArtist }
func (m *Tags) Album() string { return m.RawAlbum }
func (m *Tags) AlbumArtist() string { return m.RawAlbumArtist }
func (m *Tags) AlbumBrainzID() string { return "" }
func (m *Tags) Genre() string { return m.RawGenre }
func (m *Tags) TrackNumber() int { return 1 }
func (m *Tags) DiscNumber() int { return 1 }
func (m *Tags) Year() int { return 2021 }
func (m *Tags) Title() string { return m.RawTitle }
func (m *Tags) BrainzID() string { return "" }
func (m *Tags) Artist() string { return m.RawArtist }
func (m *Tags) Album() string { return m.RawAlbum }
func (m *Tags) AlbumArtist() string { return m.RawAlbumArtist }
func (m *Tags) AlbumArtists() []string { return m.RawAlbumArtists }
func (m *Tags) AlbumBrainzID() string { return "" }
func (m *Tags) Genre() string { return m.RawGenre }
func (m *Tags) TrackNumber() int { return 1 }
func (m *Tags) DiscNumber() int { return 1 }
func (m *Tags) Year() int { return 2021 }
func (m *Tags) Length() int { return firstInt(100, m.RawLength) }
func (m *Tags) Bitrate() int { return firstInt(100, m.RawBitrate) }
func (m *Tags) SomeAlbum() string { return first("Unknown Album", m.Album()) }
func (m *Tags) SomeArtist() string { return first("Unknown Artist", m.Artist()) }
func (m *Tags) SomeAlbumArtist() string { return first("Unknown Artist", m.AlbumArtist(), m.Artist()) }
func (m *Tags) SomeGenre() string { return first("Unknown Genre", m.Genre()) }
var _ tags.Parser = (*Tags)(nil)
func first(or string, strs ...string) string {