From 48651695d9b53cd8e789238a8e4b3f3ce9ba49d0 Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <mail@justjanne.de>
Date: Sun, 5 Nov 2023 13:49:44 +0100
Subject: [PATCH] fix: correctly handle flac with split total numbers

---
 extractors/FlacExtractor.py | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/extractors/FlacExtractor.py b/extractors/FlacExtractor.py
index 53c801d..f738aca 100644
--- a/extractors/FlacExtractor.py
+++ b/extractors/FlacExtractor.py
@@ -4,6 +4,7 @@ from mutagen.flac import FLAC
 
 from extractors.MediaExtractor import MediaExtractor
 from models.TrackMeta import TrackMeta
+from util.extract_numbers import extract_numbers
 from util.optional_map import optional_map
 
 
@@ -21,6 +22,8 @@ class FlacExtractor(MediaExtractor):
         return None
 
     def extract_tags(self) -> TrackMeta:
+        discnumber, disctotal = optional_map(self.extract_tag('discnumber'), extract_numbers)
+        tracknumber, tracktotal = optional_map(self.extract_tag('tracknumber'), extract_numbers)
         return TrackMeta(
             album=self.extract_tag('album'),
             albumsort=self.extract_tag('albumsort'),
@@ -29,14 +32,14 @@ class FlacExtractor(MediaExtractor):
             artist=self.extract_tag('artist'),
             artistsort=self.extract_tag('artistsort'),
             catalognumber=self.extract_tag('catalognumber'),
-            discnumber=optional_map(self.extract_tag('discnumber'), int),
-            disctotal=optional_map(self.extract_tag('disctotal'), int),
+            discnumber=discnumber,
+            disctotal=optional_map(self.extract_tag('disctotal'), int) or disctotal,
             label=self.extract_tag('label'),
             media=self.extract_tag('media'),
             originaldate=self.extract_tag('originaldate'),
             originalyear=self.extract_tag('originalyear'),
             title=self.extract_tag('title'),
             titlesort=self.extract_tag('titlesort'),
-            tracknumber=optional_map(self.extract_tag('tracknumber'), int),
-            tracktotal=optional_map(self.extract_tag('tracktotal'), int),
+            tracknumber=tracknumber,
+            tracktotal=optional_map(self.extract_tag('tracktotal'), int) or tracktotal,
         )
-- 
GitLab