Exemplo n.º 1
0
            public string GetPortionFilename(LibraryBookDto libraryBookDto, string template, AaxDecrypter.MultiConvertFileProperties props, string fullDirPath)
            {
                var fileNamingTemplate = getFileNamingTemplate(libraryBookDto, template, fullDirPath, Path.GetExtension(props.OutputFileName));

                fileNamingTemplate.AddParameterReplacement(TemplateTags.ChCount, props.PartsTotal);
                fileNamingTemplate.AddParameterReplacement(TemplateTags.ChNumber, props.PartsPosition);
                fileNamingTemplate.AddParameterReplacement(TemplateTags.ChNumber0, FileUtility.GetSequenceFormatted(props.PartsPosition, props.PartsTotal));
                fileNamingTemplate.AddParameterReplacement(TemplateTags.ChTitle, props.Title ?? "");

                return(fileNamingTemplate.GetFilePath());
            }
Exemplo n.º 2
0
        internal static FileNamingTemplate getFileNamingTemplate(LibraryBookDto libraryBookDto, string template, string dirFullPath, string extension)
        {
            ArgumentValidator.EnsureNotNullOrWhiteSpace(template, nameof(template));
            ArgumentValidator.EnsureNotNull(libraryBookDto, nameof(libraryBookDto));

            dirFullPath = dirFullPath?.Trim() ?? "";

            // for non-series, remove <if series-> and <-if series> tags and everything in between
            // for series, remove <if series-> and <-if series> tags, what's in between will remain
            template = ifSeriesRegex.Replace(
                template,
                string.IsNullOrWhiteSpace(libraryBookDto.SeriesName) ? "" : "$1");

            var t            = template + FileUtility.GetStandardizedExtension(extension);
            var fullfilename = dirFullPath == "" ? t : Path.Combine(dirFullPath, t);

            var fileNamingTemplate = new FileNamingTemplate(fullfilename)
            {
                IllegalCharacterReplacements = "_"
            };

            var title      = libraryBookDto.Title ?? "";
            var titleShort = title.IndexOf(':') < 1 ? title : title.Substring(0, title.IndexOf(':'));

            fileNamingTemplate.AddParameterReplacement(TemplateTags.Id, libraryBookDto.AudibleProductId);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Title, title);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.TitleShort, titleShort);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Author, libraryBookDto.AuthorNames);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.FirstAuthor, libraryBookDto.FirstAuthor);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Narrator, libraryBookDto.NarratorNames);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.FirstNarrator, libraryBookDto.FirstNarrator);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Series, libraryBookDto.SeriesName);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.SeriesNumber, libraryBookDto.SeriesNumber);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Account, libraryBookDto.Account);
            fileNamingTemplate.AddParameterReplacement(TemplateTags.Locale, libraryBookDto.Locale);

            return(fileNamingTemplate);
        }
Exemplo n.º 3
0
 /// <summary>USES LIVE CONFIGURATION VALUES</summary>
 public string GetFilename(LibraryBookDto libraryBookDto, AaxDecrypter.MultiConvertFileProperties props)
 => GetPortionFilename(libraryBookDto, Configuration.Instance.ChapterFileTemplate, props, AudibleFileStorage.DecryptInProgressDirectory);
Exemplo n.º 4
0
 /// <summary>USES LIVE CONFIGURATION VALUES</summary>
 public string GetFilename(LibraryBookDto libraryBookDto, string dirFullPath, string extension)
 => getFileNamingTemplate(libraryBookDto, Configuration.Instance.FileTemplate, dirFullPath, extension)
 .GetFilePath();
Exemplo n.º 5
0
 /// <summary>USES LIVE CONFIGURATION VALUES</summary>
 public string GetFilename(LibraryBookDto libraryBookDto)
 => getFileNamingTemplate(libraryBookDto, Configuration.Instance.FolderTemplate, AudibleFileStorage.BooksDirectory, null)
 .GetFilePath();
Exemplo n.º 6
0
 /// <summary>
 /// EditTemplateDialog: Get template generated filename for portion of path
 /// </summary>
 public string GetPortionFilename(LibraryBookDto libraryBookDto, string template)
 => string.IsNullOrWhiteSpace(template)
     ? ""
     : getFileNamingTemplate(libraryBookDto, template, null, null)
 .GetFilePath();