private async Task GetChildMetadata(PlexMediaItemRow mediaItem, string authToken, string plexUri, string machineIdentifier) { _logger.LogDebug($"Retrieving all seasons for show '{mediaItem.Title}'"); var seasonShowItems = await GetChildShowItems(mediaItem.MediaItemKey, authToken, plexUri); foreach (var seasonShowItem in seasonShowItems) { var plexSeason = mediaItem.PlexSeasons.FirstOrDefault(x => x.Season == seasonShowItem.Index); if (plexSeason == null) { plexSeason = new PlexSeasonRow { Identifier = Guid.NewGuid() }; mediaItem.PlexSeasons.Add(plexSeason); } plexSeason.MediaItemKey = seasonShowItem.RatingKey; plexSeason.Title = seasonShowItem.Title; plexSeason.AgentSourceId = seasonShowItem.AgentSourceId; plexSeason.AgentType = seasonShowItem.AgentType; plexSeason.Season = seasonShowItem.Index; plexSeason.MediaUri = PlexHelper.GenerateMediaItemUri(_plexSettings.PlexMediaItemUriFormat, machineIdentifier, seasonShowItem.RatingKey); _logger.LogDebug($"Retrieving all episodes for show '{mediaItem.Title}' season '{plexSeason.Season}'"); var episodeShowItems = await GetChildShowItems(seasonShowItem.RatingKey, authToken, plexUri); foreach (var episodeShowItem in episodeShowItems) { var plexEpisode = plexSeason.PlexEpisodes.FirstOrDefault(x => x.Episode == episodeShowItem.Index); if (plexEpisode == null) { plexEpisode = new PlexEpisodeRow { Identifier = Guid.NewGuid() }; plexSeason.PlexEpisodes.Add(plexEpisode); } plexEpisode.Identifier = Guid.NewGuid(); plexEpisode.MediaItemKey = episodeShowItem.RatingKey; plexEpisode.Title = episodeShowItem.Title; plexEpisode.AgentSourceId = episodeShowItem.AgentSourceId; plexEpisode.AgentType = episodeShowItem.AgentType; plexEpisode.Episode = episodeShowItem.Index; plexEpisode.Year = episodeShowItem.Year; plexEpisode.Resolution = episodeShowItem.Resolution; plexEpisode.MediaUri = PlexHelper.GenerateMediaItemUri(_plexSettings.PlexMediaItemUriFormat, machineIdentifier, episodeShowItem.RatingKey); } } }
private void SetEpisodePlexMediaUris(TvSeasonDetailModel tvSeasonDetailModel, PlexSeasonRow plexMediaSeason) { foreach (var episodeModel in tvSeasonDetailModel.Episodes) { if (string.IsNullOrEmpty(episodeModel.PlexMediaUri)) { var plexEpisode = plexMediaSeason.PlexEpisodes.FirstOrDefault(x => x.Episode == episodeModel.Index); if (plexEpisode != null) { episodeModel.PlexMediaUri = plexEpisode.MediaUri; } } } }