From d2e72834d814db7c166aaec38e5b68bb3d7393dd Mon Sep 17 00:00:00 2001 From: Serial <69764315+Serial-ATA@users.noreply.github.com> Date: Sun, 25 Feb 2024 22:44:32 -0500 Subject: [PATCH] PICARD-2468: Handle unspecified languages in ID3 comments Previously, a `COMM` frame with `lang='XXX' desc=''` would be saved as a separate frame with `lang='eng' desc='XXX'`. Signed-off-by: Serial <69764315+Serial-ATA@users.noreply.github.com> --- picard/util/tags.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/picard/util/tags.py b/picard/util/tags.py index 1185bc15e..5f86f8236 100644 --- a/picard/util/tags.py +++ b/picard/util/tags.py @@ -177,13 +177,22 @@ def parse_comment_tag(name): # noqa: E302 If language is not set ("comment:desc") "eng" is assumed as default. Returns a (lang, desc) tuple. """ - try: - desc = name.split(':', 1)[1] - except IndexError: - desc = '' lang = 'eng' + desc = '' + + split = name.split(':', 1) + if len(split) > 1: + desc = split[1] + match = RE_COMMENT_LANG.match(desc) if match: lang = match.group(1) desc = desc[4:] - return (lang, desc) + return lang, desc + + # Special case for unspecified language + empty description + if desc == 'XXX': + lang = 'XXX' + desc = '' + + return lang, desc