예제 #1
0
        /// <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)));
        }
예제 #2
0
        /// <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);
        }
예제 #3
0
        /// <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);
        }
예제 #4
0
 private static string GetUniqueSeriesKey(Episode episode)
 {
     return(episode.SeriesPresentationUniqueKey);
 }