Skip to content

Commit bb467c1

Browse files
committed
PICARD-3229: Fix tracknum_and_title_from_filename raising IndexError
tracknum_and_title_from_filename would raise for filenames consisting only of a track number longer then one digit.
1 parent d235bb0 commit bb467c1

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

picard/util/__init__.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,10 +646,11 @@ def tracknum_and_title_from_filename(base_filename):
646646
tracknumber = str(tracknumber)
647647
stripped_filename = filename.lstrip('0')
648648
tnlen = len(tracknumber)
649-
if stripped_filename[:tnlen] == tracknumber and len(stripped_filename) > 1:
650-
# Strip the dot in front of the tracknumber, if present
651-
dot_offset = 1 if stripped_filename[tnlen:][0] == '.' else 0
652-
title = stripped_filename[tnlen + dot_offset:].lstrip()
649+
if stripped_filename[:tnlen] == tracknumber:
650+
# Strip track number from title
651+
title = stripped_filename[tnlen:]
652+
# Strip the dot after the tracknumber, if present
653+
title = title.lstrip('.').lstrip()
653654

654655
return GuessedFromFilename(tracknumber, title)
655656

test/test_utils.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -674,7 +674,11 @@ class TracknumAndTitleFromFilenameTest(PicardTestCase):
674674
def test_returns_expected_tracknumber(self):
675675
tests = (
676676
((None, 'Foo'), 'Foo.mp3'),
677-
(('1', '1'), '1.opus'),
677+
((None, '0'), '0.opus'),
678+
((None, '0000'), '0000.opus'),
679+
(('1', ''), '1.opus'),
680+
(('12', ''), '12.opus'),
681+
(('12', ''), '012.opus'),
678682
(('1', 'Track 0001'), 'Track 0001.mp3'),
679683
(('42', 'Track-42'), 'Track-42.mp3'),
680684
(('99', 'Foo'), '99 Foo.mp3'),

0 commit comments

Comments
 (0)