public bool TryGetFanArt(FanArtConstants.FanArtMediaType mediaType, FanArtConstants.FanArtType fanArtType, string name, int maxWidth, int maxHeight, bool singleRandom, out IList<FanArtImage> result) { result = null; if (mediaType != FanArtConstants.FanArtMediaType.Album || fanArtType != FanArtConstants.FanArtType.Poster || string.IsNullOrEmpty(name)) return false; IMediaLibrary mediaLibrary = ServiceRegistration.Get<IMediaLibrary>(false); if (mediaLibrary == null) return false; IFilter filter = new RelationalFilter(AudioAspect.ATTR_ALBUM, RelationalOperator.EQ, name); MediaItemQuery query = new MediaItemQuery(NECESSARY_MIAS, filter) { Limit = 1, // Only one needed SortInformation = new List<SortInformation> { new SortInformation(AudioAspect.ATTR_ALBUM, SortDirection.Ascending) } }; var items = mediaLibrary.Search(query, false); result = new List<FanArtImage>(); foreach (var mediaItem in items) { byte[] textureData; if (!MediaItemAspect.TryGetAttribute(mediaItem.Aspects, ThumbnailLargeAspect.ATTR_THUMBNAIL, out textureData)) continue; // Only one record required result.Add(new FanArtImage(name, textureData)); return true; } return true; }
public override ICollection<FilterValue> GetAvailableValues(IEnumerable<Guid> necessaryMIATypeIds, IFilter selectAttributeFilter, IFilter filter) { IContentDirectory cd = ServiceRegistration.Get<IServerConnectionManager>().ContentDirectory; if (cd == null) throw new NotConnectedException("The MediaLibrary is not connected"); IFilter unwatchedFilter = BooleanCombinationFilter.CombineFilters(BooleanOperator.Or, new EmptyFilter(MediaAspect.ATTR_PLAYCOUNT), new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.EQ, 0)); IFilter watchedFilter = new RelationalFilter(MediaAspect.ATTR_PLAYCOUNT, RelationalOperator.GT, 0); int numUnwatchedItems = cd.CountMediaItems(necessaryMIATypeIds, unwatchedFilter, true); int numWatchedItems = cd.CountMediaItems(necessaryMIATypeIds, watchedFilter, true); return new List<FilterValue>(new FilterValue[] { new FilterValue(Consts.RES_VALUE_UNWATCHED, unwatchedFilter, null, numUnwatchedItems, this), new FilterValue(Consts.RES_VALUE_WATCHED, watchedFilter, null, numWatchedItems, this), }.Where(fv => !fv.NumItems.HasValue || fv.NumItems.Value > 0)); }