Sanitize filename parts; Fix #335

This commit is contained in:
Izuco 2022-07-02 14:02:10 +02:00
parent 250709dc1d
commit 936f86b1f0
No known key found for this signature in database
GPG key ID: E9CBE9E4EF3A1BFA
3 changed files with 21 additions and 16 deletions

View file

@ -913,16 +913,17 @@ export default class Crunchy implements ServiceClass {
const pbData = JSON.parse(playbackReq.res.body) as PlaybackData;
variables.push(...([
['title', medias.episodeTitle],
['episode', isNaN(parseInt(medias.episodeNumber)) ? medias.episodeNumber : parseInt(medias.episodeNumber)],
['service', 'CR'],
['showTitle', medias.seasonTitle],
['season', medias.season]
] as [AvailableFilenameVars, string|number][]).map((a): Variable => {
['title', medias.episodeTitle, true],
['episode', isNaN(parseInt(medias.episodeNumber)) ? medias.episodeNumber : parseInt(medias.episodeNumber), false],
['service', 'CR', false],
['showTitle', medias.seasonTitle, true],
['season', medias.season, false]
] as [AvailableFilenameVars, string|number, boolean][]).map((a): Variable => {
return {
name: a[0],
replaceWith: a[1],
type: typeof a[1]
type: typeof a[1],
sanitize: a[2]
} as Variable;
}));

17
funi.ts
View file

@ -638,18 +638,19 @@ export default class Funi implements ServiceClass {
}
fnOutput = parseFileName(data.fileName, ([
['episode', isNaN(parseInt(fnEpNum as string)) ? fnEpNum : parseInt(fnEpNum as string)],
['title', epsiode.title],
['showTitle', epsiode.showTitle],
['season', season],
['width', plLayersRes[selectedQuality].width],
['height', plLayersRes[selectedQuality].height],
['service', 'Funimation']
] as [AvailableFilenameVars, string|number][]).map((a): Variable => {
['episode', isNaN(parseInt(fnEpNum as string)) ? fnEpNum : parseInt(fnEpNum as string), true],
['title', epsiode.title, true],
['showTitle', epsiode.showTitle, true],
['season', season, false],
['width', plLayersRes[selectedQuality].width, false],
['height', plLayersRes[selectedQuality].height, false],
['service', 'Funimation', false]
] as [AvailableFilenameVars, string|number, boolean][]).map((a): Variable => {
return {
name: a[0],
replaceWith: a[1],
type: typeof a[1],
sanitize: a[2]
} as Variable;
}), data.numbers, data.override);
if (fnOutput.length < 1)

View file

@ -10,7 +10,8 @@ export type Variable<T extends string = AvailableFilenameVars> = ({
type: 'string',
replaceWith: string
}) & {
name: T
name: T,
sanitize?: boolean
}
const parseFileName = (input: string, variables: Variable[], numbers: number, override: string[]): string[] => {
@ -33,6 +34,8 @@ const parseFileName = (input: string, variables: Variable[], numbers: number, ov
const replaceStr = len < numbers ? '0'.repeat(numbers - len) + use.replaceWith : use.replaceWith.toFixed(0);
input = input.replace(type, replaceStr);
} else {
if (use.sanitize)
use.replaceWith = shlp.cleanupFilename(use.replaceWith);
input = input.replace(type, use.replaceWith);
}
}