diff options
| author | jacqueline <me@jacqueline.id.au> | 2024-01-29 19:11:10 +1100 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2024-01-29 19:11:10 +1100 |
| commit | 04ff8bf492ab16df6a6a4faffd8d55158ef9eec5 (patch) | |
| tree | 950e13e7dadc03be3c8e241feeb5bc04d34a0baf | |
| parent | 6b9a513214f13811616aa633db19c97015abf45b (diff) | |
| download | tangara-fw-04ff8bf492ab16df6a6a4faffd8d55158ef9eec5.tar.gz | |
Extract album artist from libtags-processed files
| -rw-r--r-- | lib/libtags/id3v2.c | 4 | ||||
| -rw-r--r-- | lib/libtags/tags.h | 1 | ||||
| -rw-r--r-- | lib/libtags/vorbis.c | 2 | ||||
| -rw-r--r-- | src/database/database.cpp | 2 | ||||
| -rw-r--r-- | src/database/tag_parser.cpp | 2 |
5 files changed, 9 insertions, 2 deletions
diff --git a/lib/libtags/id3v2.c b/lib/libtags/id3v2.c index f5784c20..e1529d4a 100644 --- a/lib/libtags/id3v2.c +++ b/lib/libtags/id3v2.c @@ -19,8 +19,10 @@ v2cb(Tagctx *ctx, char *k, char *v) k++; if(strcmp(k, "AL") == 0 || strcmp(k, "ALB") == 0) txtcb(ctx, Talbum, k-1, v); - else if(strcmp(k, "PE1") == 0 || strcmp(k, "PE2") == 0 || strcmp(k, "P1") == 0 || strcmp(k, "P2") == 0) + else if(strcmp(k, "PE1") == 0 || strcmp(k, "P1") == 0) txtcb(ctx, Tartist, k-1, v); + else if(strcmp(k, "PE2") == 0 || strcmp(k, "P2") == 0) + txtcb(ctx, Talbumartist, k-1, v); else if(strcmp(k, "IT2") == 0 || strcmp(k, "T2") == 0) txtcb(ctx, Ttitle, k-1, v); else if(strcmp(k, "YE") == 0 || strcmp(k, "YER") == 0 || strcmp(k, "DRC") == 0) diff --git a/lib/libtags/tags.h b/lib/libtags/tags.h index c53d239e..91045218 100644 --- a/lib/libtags/tags.h +++ b/lib/libtags/tags.h @@ -10,6 +10,7 @@ enum { Tunknown = -1, Tartist, + Talbumartist, Talbum, Ttitle, Tdate, /* "2014", "2015/02/01", but the year goes first */ diff --git a/lib/libtags/vorbis.c b/lib/libtags/vorbis.c index 0c659da5..c98a0e4e 100644 --- a/lib/libtags/vorbis.c +++ b/lib/libtags/vorbis.c @@ -14,6 +14,8 @@ cbvorbiscomment(Tagctx *ctx, char *k, char *v){ txtcb(ctx, Ttitle, k, v); else if(cistrcmp(k, "artist") == 0) txtcb(ctx, Tartist, k, v); + else if(cistrcmp(k, "albumartist") == 0) + txtcb(ctx, Talbumartist, k, v); else if(cistrcmp(k, "tracknumber") == 0) txtcb(ctx, Ttrack, k, v); else if(cistrcmp(k, "date") == 0) diff --git a/src/database/database.cpp b/src/database/database.cpp index 4bd9d2db..fa4f621e 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -55,7 +55,7 @@ static SingletonEnv<leveldb::EspEnv> sEnv; static const char kDbPath[] = "/.tangara-db"; static const char kKeyDbVersion[] = "schema_version"; -static const uint8_t kCurrentDbVersion = 4; +static const uint8_t kCurrentDbVersion = 5; static const char kKeyCustom[] = "U\0"; static const char kKeyCollator[] = "collator"; diff --git a/src/database/tag_parser.cpp b/src/database/tag_parser.cpp index a3a05a5c..293793f3 100644 --- a/src/database/tag_parser.cpp +++ b/src/database/tag_parser.cpp @@ -37,6 +37,8 @@ static auto convert_tag(int tag) -> std::optional<Tag> { return Tag::kTitle; case Tartist: return Tag::kArtist; + case Talbumartist: + return Tag::kAlbumArtist; case Talbum: return Tag::kAlbum; case Ttrack: |
