From ddcd06dbca61fc55a7c2cd68f82f8cfe7b4c5cbf Mon Sep 17 00:00:00 2001 From: jacqueline Date: Wed, 29 Jan 2025 16:04:31 +1100 Subject: [PATCH] Add 'Tdisc' to libtags Uses 'TPOS' for id3v2 tags, and 'DISCNUMBER' for vorbis comments (mostly just relevant to flacs for our use case). Fixes #181. --- lib/libtags/id3v2.c | 2 ++ lib/libtags/tags.h | 1 + lib/libtags/vorbis.c | 1 + src/tangara/database/tag_parser.cpp | 2 ++ 4 files changed, 6 insertions(+) diff --git a/lib/libtags/id3v2.c b/lib/libtags/id3v2.c index 0e8ddb11..eced01f8 100644 --- a/lib/libtags/id3v2.c +++ b/lib/libtags/id3v2.c @@ -68,6 +68,8 @@ v2cb(Tagctx *ctx, char *k, char *v) return 0; }else if(strcmp(k-1, "COM") == 0 || strcmp(k-1, "COMM") == 0){ txtcb(ctx, Tcomment, k-1, v); + }else if(strcmp(k, "POS") == 0){ + txtcb(ctx, Tdisc, k-1, v); }else if(strcmp(k, "XXX") == 0){ k = v; v += strlen(v) + 1; diff --git a/lib/libtags/tags.h b/lib/libtags/tags.h index d9da6c2e..b2aa2dfb 100644 --- a/lib/libtags/tags.h +++ b/lib/libtags/tags.h @@ -16,6 +16,7 @@ enum Ttitle, Tdate, /* "2014", "2015/02/01", but the year goes first */ Ttrack, /* "1", "01", "1/4", but the track number goes first */ + Tdisc, Talbumgain, Talbumpeak, Ttrackgain, diff --git a/lib/libtags/vorbis.c b/lib/libtags/vorbis.c index bea70aaf..d6219a24 100644 --- a/lib/libtags/vorbis.c +++ b/lib/libtags/vorbis.c @@ -14,6 +14,7 @@ static const struct { {"artists", Tmultiartists}, {"albumartist", Talbumartist}, {"tracknumber", Ttrack}, + {"discnumber", Tdisc}, {"date", Tdate}, {"replaygain_track_peak", Ttrackpeak}, {"replaygain_track_gain", Ttrackgain}, diff --git a/src/tangara/database/tag_parser.cpp b/src/tangara/database/tag_parser.cpp index 59bd8f13..6c95d496 100644 --- a/src/tangara/database/tag_parser.cpp +++ b/src/tangara/database/tag_parser.cpp @@ -41,6 +41,8 @@ static auto convert_tag(int tag) -> std::optional { return Tag::kAlbum; case Ttrack: return Tag::kTrack; + case Tdisc: + return Tag::kDisc; case Tgenre: return Tag::kGenres; default: