Example #1
0
        public static FileList GenerateRenameList(RenameOptions renameOptions)
        {
            FileList finalFileList = new FileList();

            if (renameOptions.SubtitleFileList.Count == 0 || renameOptions.MovieFileList.Count == 0)
            {
                throw new InvalidOperationException("Both list cannot be blank");
            }

            if (renameOptions.SubtitleFileList.Count % renameOptions.MovieFileList.Count != 0 || renameOptions.SubtitleFileList.Count < renameOptions.MovieFileList.Count)
            {
                throw new InvalidOperationException("File count error, the file count of subtitle / movie must be an integer");
            }

            RenameTemplate renameTemplate = new RenameTemplate(renameOptions.Template);

            renameTemplate.InitializeTemplate();

            // Create list
            int ratio = renameOptions.SubtitleFileList.Count / renameOptions.MovieFileList.Count;

            for (int i = 0; i < renameOptions.MovieFileList.Count; i++)
            {
                FileDataInfo movieFile = renameOptions.MovieFileList[i];
                for (int j = 0; j < ratio; j++)
                {
                    FileDataInfo subtitleFile = renameOptions.SubtitleFileList[i * ratio + j];
                    RenameInfo   renameInfo   = new RenameInfo()
                    {
                        MovieFileName = movieFile.FileName,
                        SubtitleGroup = renameOptions.SpecifySubtitleGroup ? renameOptions.SubtitleGroup : subtitleFile.ParseSubtitleGroup(),
                        Language      = renameOptions.SpecifyLanguage ? renameOptions.Language : subtitleFile.ParseLanguage(),
                        Extension     = renameOptions.SpecifyExtension ? renameOptions.Extension : subtitleFile.FileExtension
                    };

                    // Set folder to movie folder or original folder
                    string finalFilePath =
                        Path.Combine(
                            renameOptions.MoveToMovieFolder ? movieFile.FileFolder : subtitleFile.FileFolder,
                            renameTemplate.FormatTemplate(renameInfo));

                    if (finalFileList.Contains(finalFilePath))
                    {
                        throw new InvalidOperationException($"Duplicated final file path {subtitleFile.FileFullName} TO {finalFilePath}");
                    }
                    finalFileList.AddVirtualItem(finalFilePath);
                }
            }

            return(finalFileList);
        }
Example #2
0
        private FileList InitializeRenameList()
        {
            RenameOptions renameOptions = new RenameOptions
            {
                SubtitleFileList = subtitleFilePathList,
                MovieFileList    = movieFilePathList,

                Template = renameTemplateTextBox.Text,

                SpecifySubtitleGroup = optionSpecifySubtitleGroup.Checked,
                SubtitleGroup        = optionSubtitleGroup.Text,

                SpecifyLanguage = optionSpecifyLanguage.Checked,
                Language        = optionLanguage.Text,

                SpecifyExtension = optionSpecifyExtension.Checked,
                Extension        = optionExtension.Text,

                MoveToMovieFolder = optionMoveToMovieFolder.Checked
            };

            return(RenameOperations.GenerateRenameList(renameOptions));
        }