spotdl/utils.js
2023-05-25 13:10:41 -05:00

30 lines
1,017 B
JavaScript

export function sanitiseFilename(filename) {
const illegalRe = /[/?<>\\:*|"]/g
// eslint-disable-next-line no-control-regex
const controlRe = /[\x00-\x1f\x80-\x9f]/g
const reservedRe = /^\.+$/
const windowsReservedRe = /^(con|prn|aux|nul|com[0-9]|lpt[0-9])(\..*)?$/i
const windowsTrailingRe = /[. ]+$/
const replacement = ''
return filename
.replace(illegalRe, replacement)
.replace(controlRe, replacement)
.replace(reservedRe, replacement)
.replace(windowsReservedRe, replacement)
.replace(windowsTrailingRe, replacement)
}
export function formatPath(path, metadata, extension) {
return path
.replace(
/%album_artist/gm,
sanitiseFilename(metadata.album.artists[0].name)
)
.replace(/%album_title/gm, sanitiseFilename(metadata.album.name))
.replace(/%artist/gm, sanitiseFilename(metadata.artists[0].name))
.replace(/%title/gm, sanitiseFilename(metadata.name))
.replace(/%track/gm, metadata.trackNumber)
.replace(/%disc/gm, metadata.discNumber)
.replace(/%ext/gm, extension)
}