MirrorAPI/actions/sanitize/sanitize_filename.py

21 lines
583 B
Python

import unicodedata
import re
# Remove caracteres inválidos de nomes de arquivos
def sanitize_filename(filename: str) -> str:
# Normaliza Unicode (NFC)
filename = unicodedata.normalize("NFKD", filename)
filename = filename.encode("ascii", "ignore").decode("ascii")
# Remove caracteres inválidos
filename = re.sub(r'[<>:"/\\|?*\x00-\x1F]', "", filename)
# Substitui espaços múltiplos por um espaço
filename = re.sub(r"\s+", " ", filename).strip()
# Garante extensão
if "." not in filename:
filename += ".pdf"
return filename