public void CacheExtractedItem(Guid extractedItemId, IDictionary <Guid, IList <MediaItemAspect> > extractedAspects)
        {
            MovieCollectionInfo collection = new MovieCollectionInfo();

            collection.FromMetadata(extractedAspects);
            AddToCache(extractedItemId, collection, false);
        }
Пример #2
0
        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();
        }
Пример #3
0
        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);
        }