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)); }
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())); }