コード例 #1
0
        public ActionResult Naming()
        {
            var model = new EpisodeNamingModel();

            model.SeriesName         = _configProvider.SortingIncludeSeriesName;
            model.EpisodeName        = _configProvider.SortingIncludeEpisodeTitle;
            model.ReplaceSpaces      = _configProvider.SortingReplaceSpaces;
            model.AppendQuality      = _configProvider.SortingAppendQuality;
            model.SeasonFolders      = _configProvider.UseSeasonFolder;
            model.SeasonFolderFormat = _configProvider.SortingSeasonFolderFormat;
            model.SeparatorStyle     = _configProvider.SortingSeparatorStyle;
            model.NumberStyle        = _configProvider.SortingNumberStyle;
            model.MultiEpisodeStyle  = _configProvider.SortingMultiEpisodeStyle;
            model.SceneName          = _configProvider.SortingUseSceneName;

            model.SeparatorStyles    = new SelectList(EpisodeSortingHelper.GetSeparatorStyles(), "Id", "Name");
            model.NumberStyles       = new SelectList(EpisodeSortingHelper.GetNumberStyles(), "Id", "Name");
            model.MultiEpisodeStyles = new SelectList(EpisodeSortingHelper.GetMultiEpisodeStyles(), "Id", "Name");

            //Metadata
            model.MetadataXbmcEnabled = _metadataProvider.GetSettings(typeof(Core.Providers.Metadata.Xbmc)).Enable;
            model.MetadataUseBanners  = _configProvider.MetadataUseBanners;

            return(View(model));
        }
コード例 #2
0
        public virtual string GetNewFilename(IList <Episode> episodes, Series series, QualityTypes quality, bool proper, EpisodeFile episodeFile)
        {
            if (_configProvider.SortingUseSceneName)
            {
                Logger.Trace("Attempting to use scene name");
                if (String.IsNullOrWhiteSpace(episodeFile.SceneName))
                {
                    var name = Path.GetFileNameWithoutExtension(episodeFile.Path);
                    Logger.Trace("Unable to use scene name, because it is null, sticking with current name: {0}", name);

                    return(name);
                }

                return(episodeFile.SceneName);
            }

            var sortedEpisodes = episodes.OrderBy(e => e.EpisodeNumber);

            var separatorStyle = EpisodeSortingHelper.GetSeparatorStyle(_configProvider.SortingSeparatorStyle);
            var numberStyle    = EpisodeSortingHelper.GetNumberStyle(_configProvider.SortingNumberStyle);

            var episodeNames = new List <String>();

            episodeNames.Add(Parser.CleanupEpisodeTitle(sortedEpisodes.First().Title));

            string result = String.Empty;

            if (_configProvider.SortingIncludeSeriesName)
            {
                result += series.Title + separatorStyle.Pattern;
            }

            if (!series.IsDaily)
            {
                result += numberStyle.Pattern.Replace("%0e",
                                                      String.Format("{0:00}", sortedEpisodes.First().EpisodeNumber));

                if (episodes.Count > 1)
                {
                    var multiEpisodeStyle =
                        EpisodeSortingHelper.GetMultiEpisodeStyle(_configProvider.SortingMultiEpisodeStyle);

                    foreach (var episode in sortedEpisodes.Skip(1))
                    {
                        if (multiEpisodeStyle.Name == "Duplicate")
                        {
                            result += separatorStyle.Pattern + numberStyle.Pattern;
                        }
                        else
                        {
                            result += multiEpisodeStyle.Pattern;
                        }

                        result = result.Replace("%0e", String.Format("{0:00}", episode.EpisodeNumber));
                        episodeNames.Add(Parser.CleanupEpisodeTitle(episode.Title));
                    }
                }

                result = result
                         .Replace("%s", String.Format("{0}", episodes.First().SeasonNumber))
                         .Replace("%0s", String.Format("{0:00}", episodes.First().SeasonNumber))
                         .Replace("%x", numberStyle.EpisodeSeparator)
                         .Replace("%p", separatorStyle.Pattern);
            }

            else
            {
                if (episodes.First().AirDate.HasValue)
                {
                    result += episodes.First().AirDate.Value.ToString("yyyy-MM-dd");
                }

                else
                {
                    result += "Unknown";
                }
            }

            if (_configProvider.SortingIncludeEpisodeTitle)
            {
                if (episodeNames.Distinct().Count() == 1)
                {
                    result += separatorStyle.Pattern + episodeNames.First();
                }

                else
                {
                    result += separatorStyle.Pattern + String.Join(" + ", episodeNames.Distinct());
                }
            }

            if (_configProvider.SortingAppendQuality)
            {
                result += String.Format(" [{0}]", quality);

                if (proper)
                {
                    result += " [Proper]";
                }
            }

            if (_configProvider.SortingReplaceSpaces)
            {
                result = result.Replace(' ', '.');
            }

            Logger.Trace("New File Name is: [{0}]", result.Trim());
            return(CleanFilename(result.Trim()));
        }