public void CacheExtractedItem(Guid extractedItemId, IDictionary <Guid, IList <MediaItemAspect> > extractedAspects) { MovieCollectionInfo collection = new MovieCollectionInfo(); collection.FromMetadata(extractedAspects); AddToCache(extractedItemId, collection, false); }
public override void Update(MediaItem mediaItem) { base.Update(mediaItem); if (mediaItem == null) { return; } MovieCollectionInfo movieCollection = new MovieCollectionInfo(); if (!movieCollection.FromMetadata(mediaItem.Aspects)) { return; } CollectionName = movieCollection.CollectionName.Text ?? ""; int?count; if (mediaItem.Aspects.ContainsKey(MovieCollectionAspect.ASPECT_ID)) { if (MediaItemAspect.TryGetAttribute(mediaItem.Aspects, MovieCollectionAspect.ATTR_AVAILABLE_MOVIES, out count)) { AvailableMovies = count.Value.ToString(); } else { AvailableMovies = ""; } if (MediaItemAspect.TryGetAttribute(mediaItem.Aspects, MovieCollectionAspect.ATTR_NUM_MOVIES, out count)) { TotalMovies = count.Value.ToString(); } else { TotalMovies = ""; } if (VirtualMediaHelper.ShowVirtualMovieMedia) { Movies = TotalMovies; } else { Movies = AvailableMovies; } } FireChange(); }
public async Task <bool> TryExtractRelationshipsAsync(IResourceAccessor mediaItemAccessor, IDictionary <Guid, IList <MediaItemAspect> > aspects, IList <IDictionary <Guid, IList <MediaItemAspect> > > extractedLinkedAspects) { if (MovieMetadataExtractor.OnlyLocalMedia) { return(false); } MovieCollectionInfo collectionInfo = new MovieCollectionInfo(); if (!collectionInfo.FromMetadata(aspects)) { return(false); } if (!MovieMetadataExtractor.SkipOnlineSearches && collectionInfo.HasExternalId) { await OnlineMatcherService.Instance.UpdateCollectionAsync(collectionInfo, true, _category).ConfigureAwait(false); } for (int i = 0; i < collectionInfo.Movies.Count; i++) { MovieInfo movieInfo = collectionInfo.Movies[i]; movieInfo.CollectionNameId = collectionInfo.NameId; IDictionary <Guid, IList <MediaItemAspect> > movieAspects = new Dictionary <Guid, IList <MediaItemAspect> >(); if (movieInfo.SetMetadata(movieAspects)) { MediaItemAspect.SetAttribute(movieAspects, MediaAspect.ATTR_ISVIRTUAL, true); if (movieAspects.ContainsKey(ExternalIdentifierAspect.ASPECT_ID)) { extractedLinkedAspects.Add(movieAspects); } } } return(extractedLinkedAspects.Count > 0); }
public bool TryExtractRelationships(IDictionary <Guid, IList <MediaItemAspect> > aspects, bool importOnly, out IList <RelationshipItem> extractedLinkedAspects) { extractedLinkedAspects = null; if (importOnly) { return(false); } if (MovieMetadataExtractor.OnlyLocalMedia) { return(false); } MovieCollectionInfo collectionInfo = new MovieCollectionInfo(); if (!collectionInfo.FromMetadata(aspects)) { return(false); } if (CheckCacheContains(collectionInfo)) { return(false); } if (!MovieMetadataExtractor.SkipOnlineSearches && collectionInfo.HasExternalId) { OnlineMatcherService.Instance.UpdateCollection(collectionInfo, true, importOnly); } if (collectionInfo.Movies.Count == 0) { return(false); } if (BaseInfo.CountRelationships(aspects, LinkedRole) < collectionInfo.Movies.Count) { collectionInfo.HasChanged = true; //Force save for new movies } else { return(false); } if (!collectionInfo.HasChanged) { return(false); } AddToCheckCache(collectionInfo); extractedLinkedAspects = new List <RelationshipItem>(); for (int i = 0; i < collectionInfo.Movies.Count; i++) { MovieInfo movieInfo = collectionInfo.Movies[i]; movieInfo.CollectionNameId = collectionInfo.NameId; IDictionary <Guid, IList <MediaItemAspect> > movieAspects = new Dictionary <Guid, IList <MediaItemAspect> >(); movieInfo.SetMetadata(movieAspects); MediaItemAspect.SetAttribute(movieAspects, MediaAspect.ATTR_ISVIRTUAL, true); if (movieAspects.ContainsKey(ExternalIdentifierAspect.ASPECT_ID)) { extractedLinkedAspects.Add(new RelationshipItem(movieAspects, Guid.Empty)); } } return(extractedLinkedAspects.Count > 0); }