private void GivenMetadata(int seasonRatingKey, ref PlexMediaContainer metadata) { if (metadata == null) { metadata = new PlexMediaContainerBuilder().Build(); } _plexApi.GetMetadata(Arg.Any <string>(), Arg.Any <string>(), Arg.Is(seasonRatingKey)).Returns(metadata); }
private void GivenPlexMetadata(bool metadataExists) { _plexMetadataContainer = new PlexMediaContainerBuilder().Build(); if (!metadataExists) { _plexMetadataContainer.MediaContainer.Metadata = null; } _plexApi.GetMetadata(Arg.Any <string>(), Arg.Any <string>(), Arg.Any <int>()).Returns(_plexMetadataContainer); }
private async Task <Metadata> TryGetPlexMetadata(int ratingKey, string authToken, string plexUri) { var metadataContainer = await _plexApi.GetMetadata(authToken, plexUri, ratingKey); var metadata = metadataContainer.MediaContainer.Metadata?.FirstOrDefault(); if (metadata == null) { _logger.LogError($"No metadata was found for the container with key: {ratingKey}"); return(null); } return(metadata); }
private async Task StartPlexMovies(List <PlexServerContent> allMovies, PlexSettings settings) { foreach (var movie in allMovies) { // Just double check there is no associated request id if (movie.RequestId.HasValue) { continue; } var hasImdb = movie.ImdbId.HasValue(); var hasTheMovieDb = movie.TheMovieDbId.HasValue(); // Movies don't really use TheTvDb if (!hasImdb) { var imdbId = await GetImdbId(hasTheMovieDb, false, movie.Title, movie.TheMovieDbId, string.Empty, RequestType.Movie); if (imdbId.HasValue()) { movie.ImdbId = imdbId; hasImdb = true; _plexRepo.UpdateWithoutSave(movie); } } if (!hasTheMovieDb) { var id = await GetTheMovieDbId(false, hasImdb, string.Empty, movie.ImdbId, movie.Title, true); if (id.HasValue()) { movie.TheMovieDbId = id; hasTheMovieDb = true; _plexRepo.UpdateWithoutSave(movie); } } if (!hasTheMovieDb || !hasImdb) { // Check to see if the Plex item has anything if (!settings.Servers.Any()) { continue; } var servers = settings.Servers[0]; var metaData = await _plexApi.GetMetadata(servers.PlexAuthToken, settings.Servers[0].FullUri, movie.Key); var guids = new List <string>(); var meta = metaData.MediaContainer.Metadata.FirstOrDefault(); guids.Add(meta.guid); if (meta.Guid != null) { foreach (var g in meta.Guid) { guids.Add(g.Id); } } var providerIds = PlexHelper.GetProviderIdsFromMetadata(guids.ToArray()); if (providerIds.Any()) { if (providerIds.TheMovieDb.HasValue() && !hasTheMovieDb) { movie.TheMovieDbId = providerIds.TheMovieDb; _plexRepo.UpdateWithoutSave(movie); } if (providerIds.ImdbId.HasValue() && !hasImdb) { movie.ImdbId = providerIds.ImdbId; _plexRepo.UpdateWithoutSave(movie); } } } await _plexRepo.SaveChangesAsync(); } }