lurch-dl/core/sanitization.go
2025-03-08 21:13:22 +01:00

31 lines
605 B
Go

// Copyright (c) 2025, Julian Müller (ChaoticByte)
package core
import (
"strings"
"unicode"
)
var FnInvalidRunes = []rune("/<>:\"\\|?*")
func sanitizeUnicodeFilename(filename string) string {
filename = strings.Trim(strings.ToValidUTF8(filename, ""), " \033\007\u00A0\t\n\r.")
var filenameBuilder strings.Builder
for _, r := range filename {
isInvalid := !unicode.IsPrint(r)
if isInvalid {
continue
}
for _, c := range FnInvalidRunes {
if r == c {
isInvalid = true
break
}
}
if !isInvalid {
filenameBuilder.WriteRune(r)
}
}
return filenameBuilder.String()
}