Refactor illegal filename character cleanup

This commit is contained in:
Karn 2025-09-03 12:31:54 +01:00
parent c1b35fc895
commit bc6b985234
2 changed files with 21 additions and 3 deletions

View file

@ -0,0 +1,16 @@
// Illegal characters in the form `[illegal_character, replacement][]`
export const ILLEGAL_FILENAME_CHARACTERS = [
['\/', '-'],
['\\', '-'],
['<', ''],
['>', ''],
[':', ' - '],
['"', "'"],
['|', ' - '],
['?', ''],
['*', ''],
['[', '('],
[']', ')'],
['^', ''],
['#', ''],
];

View file

@ -12,6 +12,7 @@ import { WikiModel } from '../models/WikiModel';
import type { MediaDbPluginSettings } from '../settings/Settings';
import { MediaType } from './MediaType';
import { replaceTags } from './Utils';
import { ILLEGAL_FILENAME_CHARACTERS } from './IllegalFilenameCharactersList';
export const MEDIA_TYPES: MediaType[] = [
MediaType.Movie,
@ -75,9 +76,10 @@ export class MediaTypeManager {
return this.cleanFileName(fileName);
}
cleanFileName(fileName: string) {
const invalidCharsRegex = /\™|\®|,|#|\[|\]|\||\^|\<|\>|\?|\*|\\|\//g;
return fileName.replaceAll(invalidCharsRegex, '').replaceAll('"', "'").replaceAll(':', ' -');
cleanFileName(fileName: string): string {
const cleanedFileName = ILLEGAL_FILENAME_CHARACTERS.reduce((str, char) => str.replaceAll(char[0], char[1]), fileName);
// Remove all duplicate whitespace in the file name
return cleanedFileName.replaceAll(/ +/g, ' ');
}
async getTemplate(mediaTypeModel: MediaTypeModel, app: App): Promise<string> {