Пример #1
0
        public async Task <List <DataRow> > GetAlbums(CancellationToken token)
        {
            List <DataRow> data = new List <DataRow>();

            data.Add(new HeaderDataRow("Albums", null));

            var request  = new RestRequest("library/album", HttpMethod.Get);
            var response = await DoRestRequest(request, 100000, token);

            var jroot = JToken.Parse(response.Body);

            token.ThrowIfCancellationRequested();
            if (!jroot.IsNullOrEmpty() && !jroot["data"].IsNullOrEmpty() && !jroot["data"]["albums"].IsNullOrEmpty())
            {
                var    jalbums    = (JArray)jroot["data"]["albums"];
                string lastArtist = string.Empty;
                foreach (var jalbum in jalbums)
                {
                    var dataRow = AlbumDataRow.Parse((JObject)jalbum);
                    if (dataRow.ArtistId != lastArtist) //we naively assume it's grouped by artist. If it isn't, it won't break, but it'll look really weird
                    {
                        data.Add(new HeaderDataRow(dataRow.Artist, new string[] { "artist", dataRow.ArtistId }));
                        lastArtist = dataRow.ArtistId;
                    }
                    data.Add(dataRow);
                    token.ThrowIfCancellationRequested();
                }
            }

            return(data);
        }
Пример #2
0
        public async Task <List <AlbumDataRow> > SearchAlbums(string songName, string albumName, string artistName, CancellationToken token)
        {
            List <AlbumDataRow> data = new List <AlbumDataRow>();

            List <KeyValuePair <string, string> > searchParams = new List <KeyValuePair <string, string> >();

            if (!string.IsNullOrEmpty(songName))
            {
                searchParams.Add(new KeyValuePair <string, string>("song", songName));
            }
            if (!string.IsNullOrEmpty(albumName))
            {
                searchParams.Add(new KeyValuePair <string, string>("album", albumName));
            }
            if (!string.IsNullOrEmpty(artistName))
            {
                searchParams.Add(new KeyValuePair <string, string>("artist", artistName));
            }

            searchParams.Add(new KeyValuePair <string, string>("list", "albums"));

            var request  = new RestRequest($"library/search2", HttpMethod.Get, null, searchParams.ToArray());
            var response = await DoRestRequest(request, 100000, token);

            var jroot = JToken.Parse(response.Body);

            token.ThrowIfCancellationRequested();
            if (!jroot.IsNullOrEmpty() && !jroot["data"].IsNullOrEmpty() && !jroot["data"]["albums"].IsNullOrEmpty())
            {
                foreach (JObject albumObject in jroot["data"]["albums"])
                {
                    var dataRow = AlbumDataRow.Parse(albumObject);
                    data.Add(dataRow);
                }
            }

            return(data);
        }