From 3a41bd2920114049cf7bf7c61f33f567b317f5b2 Mon Sep 17 00:00:00 2001 From: Maxim Vershinin Date: Wed, 2 Sep 2026 18:30:53 +0500 Subject: [PATCH] fix #18 (core): malformed names of output files --- audio_splitter/filename.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/audio_splitter/filename.py b/audio_splitter/filename.py index 741be7b..dba71d6 100644 --- a/audio_splitter/filename.py +++ b/audio_splitter/filename.py @@ -41,7 +41,18 @@ def build_filename(track, idx, extension, args): clean_filename = apply_replacement(raw_filename, args.bad_chars, args.replacement_char) - clean_filename = cleanup_good_chars(clean_filename, args.replacement_char) + # Split off the file extension before cleanup so trailing + # replacement chars don't leak into the name portion. + name_part, _, ext_part = clean_filename.rpartition('.') + clean_filename = cleanup_good_chars(name_part, args.replacement_char) + # Strip leading/trailing separator characters (replacement char, + # hyphen, etc.) that may result from empty fields or bad-char + # sequences adjacent to template separators. + clean_filename = clean_filename.strip(f'{args.replacement_char}-') + # Fallback: if cleanup leaves an empty name, use the track number. + if not clean_filename: + clean_filename = f"{idx:02d}" + clean_filename = f"{clean_filename}.{ext_part}" else: clean_filename = raw_filename # Warn about unsafe characters.