/// <summary> /// Gets episode display name appropriate for the given context. /// </summary> /// <remarks> /// If context is a season, this will return a string containing just episode number and name. /// Otherwise the result will include series nams and season number. /// </remarks> /// <param name="episode">The episode.</param> /// <param name="context">Current context.</param> /// <returns>Formatted name of the episode.</returns> private string GetEpisodeDisplayName(Episode episode, BaseItem context) { string[] components; if (context is Season season) { // This is a special embedded within a season if (episode.ParentIndexNumber.HasValue && episode.ParentIndexNumber.Value == 0 && season.IndexNumber.HasValue && season.IndexNumber.Value != 0) { return(string.Format( CultureInfo.InvariantCulture, _localization.GetLocalizedString("ValueSpecialEpisodeName"), episode.Name)); } // inside a season use simple format (ex. '12 - Episode Name') var epNumberName = GetEpisodeIndexFullName(episode); components = new[] { epNumberName, episode.Name }; } else { // outside a season include series and season details (ex. 'TV Show - S05E11 - Episode Name') var epNumberName = GetEpisodeNumberDisplayName(episode); components = new[] { episode.SeriesName, epNumberName, episode.Name }; } return(string.Join(" - ", components.Where(NotNullOrWhiteSpace))); }
/// <summary> /// Gets complete episode number. /// </summary> /// <param name="episode">The episode.</param> /// <returns>For single episodes returns just the number. For double episodes - current and ending numbers.</returns> private string GetEpisodeIndexFullName(Episode episode) { var name = string.Empty; if (episode.IndexNumber.HasValue) { name += episode.IndexNumber.Value.ToString("00", CultureInfo.InvariantCulture); if (episode.IndexNumberEnd.HasValue) { name += "-" + episode.IndexNumberEnd.Value.ToString("00", CultureInfo.InvariantCulture); } } return(name); }
/// <summary> /// Gets episode number formatted as 'S##E##'. /// </summary> /// <param name="episode">The episode.</param> /// <returns>Formatted episode number.</returns> private string GetEpisodeNumberDisplayName(Episode episode) { var name = string.Empty; var seasonNumber = episode.Season?.IndexNumber; if (seasonNumber.HasValue) { name = "S" + seasonNumber.Value.ToString("00", CultureInfo.InvariantCulture); } var indexName = GetEpisodeIndexFullName(episode); if (!string.IsNullOrWhiteSpace(indexName)) { name += "E" + indexName; } return(name); }
private static string GetUniqueSeriesKey(Episode episode) { return(episode.SeriesPresentationUniqueKey); }