From acaa725478ae5e6e4fff9e07cf8637d17d314c41 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 25 Aug 2012 09:56:14 +0200 Subject: playlist/cue: map "PERFORMER" to "artist" or "album artist" Implements Mantis ticket 0003549. --- NEWS | 2 ++ src/cue/cue_parser.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 717151dec..c23739d7a 100644 --- a/NEWS +++ b/NEWS @@ -9,6 +9,8 @@ ver 0.17.2 (2012/??/??) * output: - httpd: use monotonic clock, avoid hiccups after system clock adjustment - httpd: fix throttling bug after resuming playback +* playlist: + - cue: map "PERFORMER" to "artist" or "album artist" * mapper: fix non-UTF8 music directory name * mapper: fix potential crash in file permission check * playlist: fix use-after-free bug diff --git a/src/cue/cue_parser.c b/src/cue/cue_parser.c index 868aed094..2b0733f00 100644 --- a/src/cue/cue_parser.c +++ b/src/cue/cue_parser.c @@ -216,9 +216,19 @@ cue_parser_feed2(struct cue_parser *parser, char *p) if (tag != NULL) cue_parse_rem(p, tag); } else if (strcmp(command, "PERFORMER") == 0) { + /* MPD knows a "performer" tag, but it is not a good + match for this CUE tag; from the Hydrogenaudio + Knowledgebase: "At top-level this will specify the + CD artist, while at track-level it specifies the + track artist." */ + + enum tag_type type = parser->state == TRACK + ? TAG_ARTIST + : TAG_ALBUM_ARTIST; + struct tag *tag = cue_current_tag(parser); if (tag != NULL) - cue_add_tag(tag, TAG_PERFORMER, p); + cue_add_tag(tag, type, p); } else if (strcmp(command, "TITLE") == 0) { if (parser->state == HEADER) cue_add_tag(parser->tag, TAG_ALBUM, p); -- cgit v1.2.3