Fix Windows path mangling for artist names with trailing dots (e.g. Fred again..)

This commit is contained in:
Broque Thomas 2026-03-14 23:11:18 -07:00
parent cae2bd0c62
commit 6fa3b490ea
2 changed files with 12 additions and 0 deletions

View file

@ -7751,6 +7751,11 @@ class DownloadsPage(QWidget):
sanitized = re.sub(r'[<>:"/\\|?*]', '_', filename)
# Remove multiple spaces and trim
sanitized = re.sub(r'\s+', ' ', sanitized).strip()
# Windows forbids trailing dots/spaces on files and folders
sanitized = sanitized.rstrip('. ') or '_'
# Windows reserved device names
if re.match(r'^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\.|$)', sanitized, re.IGNORECASE):
sanitized = '_' + sanitized
# Limit length to avoid filesystem issues
return sanitized[:200] if len(sanitized) > 200 else sanitized

View file

@ -12543,6 +12543,13 @@ def _sanitize_filename(filename: str) -> str:
import re
sanitized = re.sub(r'[<>:"/\\|?*]', '_', filename)
sanitized = re.sub(r'\s+', ' ', sanitized).strip()
# Windows forbids trailing dots/spaces on files and folders.
# Artists like "Fred again.." would create mangled 8.3 short names.
sanitized = sanitized.rstrip('. ') or '_'
# Windows reserved device names (CON, PRN, AUX, NUL, COM1-9, LPT1-9)
# can't be used as file or folder names even with extensions.
if re.match(r'^(CON|PRN|AUX|NUL|COM[1-9]|LPT[1-9])(\.|$)', sanitized, re.IGNORECASE):
sanitized = '_' + sanitized
return sanitized[:200]
def _sanitize_context_values(context: dict) -> dict: