40 lines
1.4 KiB
JavaScript
40 lines
1.4 KiB
JavaScript
// This is a simple example script demonstrating how the renaming tool can be used.
|
|
// script configuration
|
|
|
|
// skip directories in this example script
|
|
if (!tageditor.isFile) {
|
|
tageditor.skip()
|
|
return
|
|
}
|
|
|
|
// parse file using the built-in parseFileInfo function
|
|
const fileInfo = tageditor.parseFileInfo(tageditor.currentPath)
|
|
const tag = fileInfo.tag
|
|
const tracks = fileInfo.tracks
|
|
|
|
// deduce title and track number from the file name using the built-in parseFileName function (as fallback if tags missing)
|
|
const infoFromFileName = tageditor.parseFileName(fileInfo.currentBaseName)
|
|
|
|
// skip files which don't contain audio or video tracks
|
|
if (!fileInfo.hasAudioTracks && !fileInfo.hasVideoTracks) {
|
|
tageditor.skip()
|
|
return
|
|
}
|
|
|
|
// make new filename
|
|
const fieldsToInclude = [tag.albumartist || tag.artist, tag.album, tag.trackPos || infoFromFileName.trackPos, tag.title || infoFromFileName.title]
|
|
let newName = ""
|
|
for (let field of fieldsToInclude) {
|
|
field = field.toString()
|
|
if (typeof field === "number" && tag.trackTotal) {
|
|
field = field.padStart(tag.trackTotal.toString().length, "0")
|
|
}
|
|
if (field && field.length !== 0) {
|
|
newName = newName.concat(newName.length === 0 ? "" : " - ", field.toString().replace(/[\/\\]/gi, " - ").replace(/[<>?!*|:\"\n\f\r]/gi, ""))
|
|
}
|
|
}
|
|
newName = newName.concat(".", fileInfo.suitableSuffix || fileInfo.currentSuffix)
|
|
|
|
// apply new name
|
|
tageditor.rename(newName)
|