public async Task <bool> TryExtractRelationshipsAsync(IResourceAccessor mediaItemAccessor, IDictionary <Guid, IList <MediaItemAspect> > aspects, IList <IDictionary <Guid, IList <MediaItemAspect> > > extractedLinkedAspects) { AlbumInfo albumInfo = new AlbumInfo(); if (!albumInfo.FromMetadata(aspects)) { return(false); } AudioMetadataExtractor.TryUpdateAlbum(mediaItemAccessor, albumInfo); if (AudioMetadataExtractor.IncludeArtistDetails && !AudioMetadataExtractor.SkipOnlineSearches) { await OnlineMatcherService.Instance.UpdateAlbumPersonsAsync(albumInfo, PersonAspect.OCCUPATION_ARTIST).ConfigureAwait(false); } foreach (PersonInfo person in albumInfo.Artists) { IDictionary <Guid, IList <MediaItemAspect> > personAspects = new Dictionary <Guid, IList <MediaItemAspect> >(); if (person.SetMetadata(personAspects) && personAspects.ContainsKey(ExternalIdentifierAspect.ASPECT_ID)) { extractedLinkedAspects.Add(personAspects); } } return(extractedLinkedAspects.Count > 0); }
public async Task <bool> TryExtractRelationshipsAsync(IResourceAccessor mediaItemAccessor, IDictionary <Guid, IList <MediaItemAspect> > aspects, IList <IDictionary <Guid, IList <MediaItemAspect> > > extractedLinkedAspects) { TrackInfo trackInfo = new TrackInfo(); if (!trackInfo.FromMetadata(aspects)) { return(false); } AlbumInfo albumInfo = trackInfo.CloneBasicInstance <AlbumInfo>(); AudioMetadataExtractor.TryUpdateAlbum(mediaItemAccessor, albumInfo); if (!AudioMetadataExtractor.SkipOnlineSearches) { await OnlineMatcherService.Instance.UpdateAlbumAsync(albumInfo, false).ConfigureAwait(false); } IDictionary <Guid, IList <MediaItemAspect> > albumAspects = new Dictionary <Guid, IList <MediaItemAspect> >(); albumInfo.SetMetadata(albumAspects); bool trackVirtual = true; if (MediaItemAspect.TryGetAttribute(aspects, MediaAspect.ATTR_ISVIRTUAL, false, out trackVirtual)) { MediaItemAspect.SetAttribute(albumAspects, MediaAspect.ATTR_ISVIRTUAL, trackVirtual); } if (!aspects.ContainsKey(ReimportAspect.ASPECT_ID)) //Ignore for reimports because the image might be wrong { byte[] data; if (MediaItemAspect.TryGetAttribute(aspects, ThumbnailLargeAspect.ATTR_THUMBNAIL, out data)) { //Use image from track as image MediaItemAspect.SetAttribute(albumAspects, ThumbnailLargeAspect.ATTR_THUMBNAIL, data); } } if (!albumAspects.ContainsKey(ExternalIdentifierAspect.ASPECT_ID)) { return(false); } extractedLinkedAspects.Add(albumAspects); return(true); }
public async Task <bool> TryExtractRelationshipsAsync(IResourceAccessor mediaItemAccessor, IDictionary <Guid, IList <MediaItemAspect> > aspects, IList <IDictionary <Guid, IList <MediaItemAspect> > > extractedLinkedAspects) { TrackInfo trackInfo = new TrackInfo(); if (!trackInfo.FromMetadata(aspects)) { return(false); } AlbumInfo albumInfo = trackInfo.CloneBasicInstance <AlbumInfo>(); AudioMetadataExtractor.TryUpdateAlbum(mediaItemAccessor, albumInfo); if (!AudioMetadataExtractor.SkipOnlineSearches) { await OnlineMatcherService.Instance.UpdateAlbumAsync(albumInfo, false, _category).ConfigureAwait(false); } IDictionary <Guid, IList <MediaItemAspect> > albumAspects = new Dictionary <Guid, IList <MediaItemAspect> >(); albumInfo.SetMetadata(albumAspects); bool trackVirtual = true; if (MediaItemAspect.TryGetAttribute(aspects, MediaAspect.ATTR_ISVIRTUAL, false, out trackVirtual)) { MediaItemAspect.SetAttribute(albumAspects, MediaAspect.ATTR_ISVIRTUAL, trackVirtual); } if (!albumAspects.ContainsKey(ExternalIdentifierAspect.ASPECT_ID)) { return(false); } extractedLinkedAspects.Add(albumAspects); return(true); }