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);
                }
            }
        }
Exemple #2
0
        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;
                    }
                }
            }
        }