Okay updated masks are
Rename mask
function ignoreThe(name)
{
if(name.startsWith('The ')) return name.substring(4);
return name;
}
function brackets(name)
{
if(name.length>0) return '(' + name + ')';
return '';
}
function squareBrackets(name)
{
if(name.length>0) return '[' + name + ']';
return '';
}
function yearOnly(year)
{
if(year.length>4) return year.substring(0,4);
return year;
}
function r(value)
{
return value.replaceAll("\\?","");
}
function formatSubtitle(subtitle)
{
if(subtitle.length>0) return ' - ' + subtitle;
return "";
}
function formatTrackArtist()
{
featuredartists="";
for(i=0; i<artists_index.length;i++)
{
if(!albumartists.contains(artists_index[i]))
{
featuredartists+=artists_index[i] + ", ";
}
}
if(featuredartists.length>0)
{
return 'feat. ' + substring(featuredartists, featuredartists.length -2);
}
return "";
}
function formatReleaseType()
{
if(mbreleasetype.toLowerCase().contains("live") && mbreleasetype.toLowerCase().contains("album")) return brackets('Live') + ' ';
if(mbreleasetype.toLowerCase().contains("album")) return "";
return brackets(mbreleasetype) + ' ';
}
function writeArtist(type)
{
return r(type
+ "/"
+ ifnotempty2(ignoreThe(albumartist).substring(0,1),ignoreThe(artist).substring(0,1),'/')
+ ifnotempty2(albumartist,artist,'/')
+ formatReleaseType()
+ ifnotempty(album + ' ' + brackets(yearOnly(year)),'/')
+ ifmultidisc(squareBrackets('CD' + pad(discno,2) + formatSubtitle(subtitle)) + ' ')
+ ifnotempty(pad(trackno,2),' - ')
+ ifnotempty(title,' ')
+ squareBrackets(formatTrackArtist()))
}
function writeSoundtrack(type)
{
return r(type
+ "/"
+ ifnotempty(album + ' ' + brackets(yearOnly(year)) + " by " + albumartist,'/')
+ ifmultidisc(squareBrackets('CD' + pad(discno,2) + formatSubtitle(subtitle))+ ' ')
+ ifnotempty(pad(trackno,2),' - ')
+ ifnotempty(title,' ')
+ squareBrackets(formatTrackArtist()))
}
function writeAudiobook(type)
{
return r(type
+ "/"
+ ifnotempty(album + ' ' + brackets(yearOnly(year)) + " by " + albumartist,'/')
+ ifmultidisc('CD' + pad(discno,2) + formatSubtitle(subtitle)+ '/')
+ ifnotempty(pad(trackno,2),' - ')
+ ifnotempty(title,' '))
}
if(mbreleasetype.contains("Soundtrack"))
{
writeSoundtrack("Soundtracks");
}
else if(mbreleasetype.contains("Audiobook"))
{
writeAudiobook("Audiobooks");
}
else
{
writeArtist("Artists");
}
Compilation Rename Mask
function ignoreThe(name)
{
if(name.startsWith('The ')) return name.substring(4);
return name;
}
function brackets(name)
{
if(name.length>0) return '(' + name + ')';
return '';
}
function squareBrackets(name)
{
if(name.length>0) return '[' + name + ']';
return '';
}
function yearOnly(year)
{
if(year.length>4) return year.substring(0,4);
return year;
}
function r(value)
{
return value.replaceAll("\\?","");
}
function formatSubtitle(subtitle)
{
if(subtitle.length>0) return ' - ' + subtitle;
return "";
}
function formatTrackArtist()
{
mainartist=artists_index[0];
featuredartists="";
for(i=1; i<artists_index.length;i++)
{
if(!albumartists.contains(artists_index[i]))
{
featuredartists+=artists_index[i] + ", ";
}
}
if(featuredartists.length>0)
{
return mainartist + ' feat. ' + substring(featuredartists, featuredartists.length -2);
}
return mainartist;
}
function writeBody(subFolder)
{
return r(subFolder + "/"
+ ifnotempty(album + ' ' + brackets(yearOnly(year)) + " by " + albumartist,'/')
+ ifmultidisc(squareBrackets('CD' + pad(discno,2) + formatSubtitle(subtitle))+ ' ')
+ ifnotempty(pad(trackno,2),' - ')
+ ifnotempty(title,' ')
+ squareBrackets(formatTrackArtist()))
}
function writeAudiobooks(subFolder)
{
return r(subFolder + "/"
+ ifnotempty(album + ' ' + brackets(yearOnly(year)) + " by " + albumartist,'/')
+ ifmultidisc('CD' + pad(discno,2) + formatSubtitle(subtitle)+ '/')
+ ifnotempty(pad(trackno,2),' - ')
+ ifnotempty(title,' ')
+ squareBrackets(formatTrackArtist()))
}
if(mbreleasetype.contains("Soundtrack"))
{
writeBody("Soundtracks")
}
else if(mbreleasetype.contains("Audiobook"))
{
writeAudiobooks("Audiobooks")
}
else
{
writeBody("Compilations");
}