public void remove_slashes()
        {
            var fileNamingTemplate = new FileNamingTemplate(@"\foo\<title>.txt");

            fileNamingTemplate.AddParameterReplacement("title", @"s\l/a\s/h\e/s");
            fileNamingTemplate.GetFilePath().Should().Be(@"\foo\slashes.txt");
        }
Beispiel #2
0
        public static string DefaultMultipartFilename(MultiConvertFileProperties multiConvertFileProperties)
        {
            var template = Path.ChangeExtension(multiConvertFileProperties.OutputFileName, null) + " - <ch# 0> - <title>" + Path.GetExtension(multiConvertFileProperties.OutputFileName);

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

            fileNamingTemplate.AddParameterReplacement("ch# 0", FileUtility.GetSequenceFormatted(multiConvertFileProperties.PartsPosition, multiConvertFileProperties.PartsTotal));
            fileNamingTemplate.AddParameterReplacement("title", multiConvertFileProperties.Title ?? "");

            return(fileNamingTemplate.GetFilePath());
        }
        private static string NEW_GetValidFilename_FileNamingTemplate(string dirFullPath, string filename, string extension, string metadataSuffix)
        {
            var template = $"<title> [<id>]";

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

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

            fileNamingTemplate.AddParameterReplacement("title", filename);
            fileNamingTemplate.AddParameterReplacement("id", metadataSuffix);
            return(fileNamingTemplate.GetFilePath());
        }
        private static string NEW_GetMultipartFileName_FileNamingTemplate(string originalPath, int partsPosition, int partsTotal, string suffix)
        {
            // 1-9     => 1-9
            // 10-99   => 01-99
            // 100-999 => 001-999
            var chapterCountLeadingZeros = partsPosition.ToString().PadLeft(partsTotal.ToString().Length, '0');

            var t = Path.ChangeExtension(originalPath, null) + " - <chapter> - <title>" + Path.GetExtension(originalPath);

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

            fileNamingTemplate.AddParameterReplacement("chapter", chapterCountLeadingZeros);
            fileNamingTemplate.AddParameterReplacement("title", suffix);
            return(fileNamingTemplate.GetFilePath());
        }
Beispiel #5
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);
        }
		public static void AddParameterReplacement(this FileNamingTemplate fileNamingTemplate, TemplateTags templateTags, object value)
			=> fileNamingTemplate.AddParameterReplacement(templateTags.TagName, value);