From e9e608cfa09792a64fbda0946c92ec396622a088 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 23 Dec 2024 16:08:47 +1100 Subject: Add a new track tag + index for multiple artists We still mostly use the singular 'Artist' tag for e.g. displaying a nice name in the now playing screen, but where a track has an 'ARTISTS=' tag, we'll split by semicolon and then use the resulting list to populate an index of tracks by artist --- src/tangara/database/index.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/tangara/database/index.cpp') diff --git a/src/tangara/database/index.cpp b/src/tangara/database/index.cpp index 1cdc0d07..58a7ead4 100644 --- a/src/tangara/database/index.cpp +++ b/src/tangara/database/index.cpp @@ -56,6 +56,13 @@ const IndexInfo kAllAlbums{ .components = {Tag::kAlbum, Tag::kAlbumOrder}, }; +const IndexInfo kAllArtists{ + .id = 7, + .type = MediaType::kMusic, + .name = "All Artists", + .components = {Tag::kAllArtists, Tag::kTitle}, +}; + const IndexInfo kPodcasts{ .id = 5, .type = MediaType::kPodcast, @@ -114,6 +121,8 @@ class Indexer { return "Unknown Album"; case Tag::kAlbumArtist: return track_tags_.artist().value_or("Unknown Artist"); + case Tag::kAllArtists: + return track_tags_.artist().value_or("Unknown Artist"); case Tag::kGenres: return std::pmr::vector{}; case Tag::kDisc: -- cgit v1.2.3 From b6b62cb8ea8121a3ae604b508c508a2a4994050a Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 31 Dec 2024 11:30:23 +1100 Subject: Handle synthesizing missing tag values in TrackTags instead of the indexer --- src/tangara/database/index.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/tangara/database/index.cpp') diff --git a/src/tangara/database/index.cpp b/src/tangara/database/index.cpp index 58a7ead4..b3af716b 100644 --- a/src/tangara/database/index.cpp +++ b/src/tangara/database/index.cpp @@ -116,13 +116,12 @@ class Indexer { case Tag::kTitle: return titleOrFilename(track_data_, track_tags_); case Tag::kArtist: + case Tag::kAlbumArtist: return "Unknown Artist"; case Tag::kAlbum: return "Unknown Album"; - case Tag::kAlbumArtist: - return track_tags_.artist().value_or("Unknown Artist"); case Tag::kAllArtists: - return track_tags_.artist().value_or("Unknown Artist"); + return std::pmr::vector{}; case Tag::kGenres: return std::pmr::vector{}; case Tag::kDisc: -- cgit v1.2.3 From 824fca8cd0913a4f1603cdedd046c420840a3e65 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 31 Dec 2024 12:34:04 +1100 Subject: Reorder indexes It turns out the index *id* controls this, which is probably not good! --- src/tangara/database/index.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/tangara/database/index.cpp') diff --git a/src/tangara/database/index.cpp b/src/tangara/database/index.cpp index b3af716b..e60f56d5 100644 --- a/src/tangara/database/index.cpp +++ b/src/tangara/database/index.cpp @@ -57,21 +57,21 @@ const IndexInfo kAllAlbums{ }; const IndexInfo kAllArtists{ - .id = 7, + .id = 5, .type = MediaType::kMusic, .name = "All Artists", .components = {Tag::kAllArtists, Tag::kTitle}, }; const IndexInfo kPodcasts{ - .id = 5, + .id = 6, .type = MediaType::kPodcast, .name = "Podcasts", .components = {Tag::kAlbum, Tag::kTitle}, }; const IndexInfo kAudiobooks{ - .id = 6, + .id = 7, .type = MediaType::kAudiobook, .name = "Audiobooks", .components = {Tag::kAlbum, Tag::kAlbumOrder}, -- cgit v1.2.3