Chapter splitting: file names need more leading zeros when qty >100

This commit is contained in:
Robert McRackan 2021-10-09 14:20:21 -04:00
parent df90094884
commit 1de7edd9df

View File

@ -187,7 +187,7 @@ That naming may not be desirable for everyone, but it's an easy change to instea
var chapterCount = 0; var chapterCount = 0;
aaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback => aaxFile.ConvertToMultiMp4a(splitChapters, newSplitCallback =>
{ {
var fileName = GetMultipartFileName(++chapterCount, newSplitCallback.Chapter.Title); var fileName = GetMultipartFileName(++chapterCount, splitChapters.Count, newSplitCallback.Chapter.Title);
if (File.Exists(fileName)) if (File.Exists(fileName))
FileExt.SafeDelete(fileName); FileExt.SafeDelete(fileName);
newSplitCallback.OutputFile = File.Open(fileName, FileMode.OpenOrCreate); newSplitCallback.OutputFile = File.Open(fileName, FileMode.OpenOrCreate);
@ -199,7 +199,7 @@ That naming may not be desirable for everyone, but it's an easy change to instea
var chapterCount = 0; var chapterCount = 0;
aaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback => aaxFile.ConvertToMultiMp3(splitChapters, newSplitCallback =>
{ {
var fileName = GetMultipartFileName(++chapterCount, newSplitCallback.Chapter.Title); var fileName = GetMultipartFileName(++chapterCount, splitChapters.Count, newSplitCallback.Chapter.Title);
if (File.Exists(fileName)) if (File.Exists(fileName))
FileExt.SafeDelete(fileName); FileExt.SafeDelete(fileName);
newSplitCallback.OutputFile = File.Open(fileName, FileMode.OpenOrCreate); newSplitCallback.OutputFile = File.Open(fileName, FileMode.OpenOrCreate);
@ -208,11 +208,16 @@ That naming may not be desirable for everyone, but it's an easy change to instea
} }
// return. cache name for event call at end of processing // return. cache name for event call at end of processing
private string GetMultipartFileName(int chapterCount, string chapterTitle) private string GetMultipartFileName(int chapterCount, int chaptersTotal, string chapterTitle)
{ {
// 1-9 => 1-9
// 10-99 => 01-99
// 100-999 => 001-999
var chapterCountLeadingZeros = chapterCount.ToString().PadLeft(chaptersTotal.ToString().Length, '0');
string extension = Path.GetExtension(OutputFileName); string extension = Path.GetExtension(OutputFileName);
var filenameBase = $"{Path.GetFileNameWithoutExtension(OutputFileName)} - {chapterCount:D2} - {chapterTitle}"; var filenameBase = $"{Path.GetFileNameWithoutExtension(OutputFileName)} - {chapterCountLeadingZeros} - {chapterTitle}";
// Replace illegal path characters with spaces // Replace illegal path characters with spaces
var filenameBaseSafe = string.Join(" ", filenameBase.Split(Path.GetInvalidFileNameChars())); var filenameBaseSafe = string.Join(" ", filenameBase.Split(Path.GetInvalidFileNameChars()));
var fileName = filenameBaseSafe.Truncate(MAX_FILENAME_LENGTH - extension.Length); var fileName = filenameBaseSafe.Truncate(MAX_FILENAME_LENGTH - extension.Length);