public async Task <List <Artist> > GetArtistsAsync() { if (_artists != null && _artistCacheRevision == Client.CurrentLibraryUpdateNumber) { return(_artists); } var query = DacpQueryCollection.And(DacpQueryPredicate.IsNotEmpty("daap.songartist"), MediaKindQuery); DacpRequest request = GetGroupsRequest(query, true, "artists"); try { var response = await Client.SendRequestAsync(request).ConfigureAwait(false); _groupedArtists = DacpUtility.GetAlphaGroupedDacpList(response.Nodes, n => new Artist(this, n), out _artists); _artistsByID = _artists.ToDictionary(a => a.ID); } catch { _artists = new List <Artist>(); _artistsByID = new Dictionary <int, Artist>(); _groupedArtists = new DacpList <Artist>(false); } _artistCacheRevision = Client.CurrentLibraryUpdateNumber; return(_artists); }
internal DacpRequest GetGenresRequest(bool requestSortHeaders = false) { DacpRequest request = new DacpRequest("/databases/{0}/browse/genres", Database.ID); DacpQueryElement query = DacpQueryCollection.And(DacpQueryPredicate.IsNotEmpty("daap.songgenre"), MediaKindQuery); request.QueryParameters["filter"] = query.ToString(); if (requestSortHeaders) { request.QueryParameters["include-sort-headers"] = "1"; } return(request); }
public async Task <List <Podcast> > SearchShowsAsync(string searchString, CancellationToken cancellationToken) { DacpQueryElement query = DacpQueryCollection.And(DacpQueryPredicate.Is("daap.songalbum", searchString), DacpQueryPredicate.IsNotEmpty("daap.songalbum"), MediaKindQuery); DacpRequest request = GetGroupsRequest(query, false, "albums"); request.CancellationToken = cancellationToken; try { var response = await Client.SendRequestAsync(request).ConfigureAwait(false); return(DacpUtility.GetItemsFromNodes(response.Nodes, n => new Podcast(this, n)).ToList()); } catch { return(null); } }
public Task <IDacpList> GetGenreArtistsAsync(string genreName) { var query = DacpQueryCollection.And(DacpQueryPredicate.Is("daap.songgenre", genreName), DacpQueryPredicate.IsNotEmpty("daap.songartist"), MediaKindQuery); DacpRequest request = GetGroupsRequest(query, true, "artists"); return(Client.GetAlphaGroupedListAsync(request, n => new Artist(this, n))); }