コード例 #1
0
 public Task <WebResults> SearchAsync(string query, WebResults.Type searchType = WebResults.Type.Song,
                                      int limit = 10, string pageToken = null)
 {
     return(Task.FromResult(new WebResults
     {
         Albums = CreateDummyAlbums(),
         Artists = CreateDummyArtists(),
         Songs = CreateDummySongs()
     }));
 }
コード例 #2
0
        public override async Task <WebResults> SearchAsync(string query,
                                                            WebResults.Type searchType = WebResults.Type.Song,
                                                            int limit = 20, string pageToken = null)
        {
            switch (searchType)
            {
            default:
                var songResponse = await
                                       (pageToken == null
                            ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog, SearchFilter.Tracks,
                                                  maxItems: limit)
                            : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var songResults = new WebResults
                {
                    HasMore   = songResponse.Tracks?.ContinuationToken != null,
                    PageToken = songResponse.Tracks?.ContinuationToken,
                    Songs     = songResponse.Tracks?.Items?.Select(CreateSong).ToList()
                };
                return(songResults);

            case WebResults.Type.Artist:
                var artistResponse =
                    await
                        (pageToken == null
                                ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog,
                                                      SearchFilter.Artists, maxItems: limit)
                                : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var artistResults = new WebResults
                {
                    HasMore   = artistResponse.Artists?.ContinuationToken != null,
                    PageToken = artistResponse.Artists?.ContinuationToken,
                    Artists   = artistResponse.Artists?.Items?.Select(CreateArtist).ToList()
                };
                return(artistResults);

            case WebResults.Type.Album:
                var albumResponse =
                    await
                        (pageToken == null
                                ? _client.SearchAsync(Namespace.music, query, ContentSource.Catalog, SearchFilter.Albums,
                                                      maxItems: limit)
                                : _client.SearchContinuationAsync(Namespace.music, pageToken));
                var albumResults = new WebResults
                {
                    HasMore   = albumResponse.Albums?.ContinuationToken != null,
                    PageToken = albumResponse.Albums?.ContinuationToken,
                    Albums    =
                        albumResponse.Albums?.Items?.Select(CreateAlbum).Distinct(new WebAlbum.Comparer()).ToList()
                };
                return(albumResults);
            }
        }
コード例 #3
0
        public override async Task <WebResults> SearchAsync(string query,
                                                            WebResults.Type searchType = WebResults.Type.Song, int limit = 20, string pageToken = null)
        {
            int offset;

            int.TryParse(pageToken, out offset);

            using (var response =
                       await new SpotifySearchRequest(query)
                       .Type(searchType)
                       .Limit(limit)
                       .Offset(offset)
                       .ToResponseAsync()
                       .DontMarshall())
            {
                if (!response.HasData)
                {
                    return(null);
                }
                if (response.Data.HasError())
                {
                    throw new ProviderException(response.Data.ErrorResponse.Message);
                }

                WebResults results;

                switch (searchType)
                {
                case WebResults.Type.Song:
                    results       = CreateResults(response.Data.Tracks);
                    results.Songs = response.Data.Tracks?.Items?.Select(CreateSong).Distinct(new WebSong.Comparer()).ToList();
                    break;

                case WebResults.Type.Artist:
                    results         = CreateResults(response.Data.Artists);
                    results.Artists = response.Data.Artists?.Items?.Select(CreateArtist).ToList();
                    break;

                default:
                    results        = CreateResults(response.Data.Albums);
                    results.Albums =
                        response.Data.Albums?.Items?.Select(CreateAlbum).Distinct(new WebAlbum.Comparer()).ToList();
                    break;
                }

                return(results);
            }
        }
コード例 #4
0
        public override async Task <WebResults> SearchAsync(string query,
                                                            WebResults.Type searchType = WebResults.Type.Song,
                                                            int limit = 20, string pageToken = null)
        {
            using (var client = CreateClient())
            {
                var page = string.IsNullOrEmpty(pageToken) ? 1 : int.Parse(pageToken);

                WebResults results;

                switch (searchType)
                {
                case WebResults.Type.Song:
                {
                    var response = await client.Track.SearchAsync(query, page, limit);

                    results       = CreateResults(response);
                    results.Songs = response.Content.Select(CreateSong).ToList();
                }
                break;

                case WebResults.Type.Artist:
                {
                    var response = await client.Artist.SearchAsync(query, page, limit);

                    results         = CreateResults(response);
                    results.Artists = response.Content.Select(CreateArtist).ToList();
                }
                break;

                default:
                {
                    var response = await client.Album.SearchAsync(query, page, limit);

                    results        = CreateResults(response);
                    results.Albums = response.Content.Select(CreateAlbum).ToList();
                }
                break;
                }

                return(results);
            }
        }
コード例 #5
0
        public override async Task <WebResults> SearchAsync(string query,
                                                            WebResults.Type searchType = WebResults.Type.Song,
                                                            int limit = 20, string pageToken = null)
        {
            int offset;

            int.TryParse(pageToken, out offset);

            using (
                var response =
                    await new DeezerSearchRequest <JToken>(query)
                    .Type(searchType)
                    .Limit(limit)
                    .Offset(offset)
                    .ToResponseAsync()
                    .DontMarshall())
            {
                if (!response.HasData)
                {
                    return(null);
                }

                var results = CreateResults(response.Data, limit, offset);

                switch (searchType)
                {
                case WebResults.Type.Song:
                    results.Songs = response.Data.Data?.Select(CreateSong).ToList();
                    break;

                case WebResults.Type.Artist:
                    results.Artists = response.Data.Data?.Select(CreateArtist).ToList();
                    break;

                default:
                    results.Albums = response.Data.Data?.Select(CreateAlbum).Distinct(new WebAlbum.Comparer()).ToList();
                    break;
                }

                return(results);
            }
        }
コード例 #6
0
 public DeezerChartRequest(WebResults.Type type)
 {
     this.Url("http://api.deezer.com/chart/0/{type}").Type(type);
 }
コード例 #7
0
 public DeezerChartRequest <T> Type(WebResults.Type type)
 {
     return(this.UrlParam("type", type.ToString().ToLower().Replace("song", "track") + "s"));
 }
コード例 #8
0
 public SpotifySearchRequest Type(WebResults.Type type)
 {
     return(this.Param("type", type.ToString().ToLower().Replace("song", "track")));
 }
コード例 #9
0
 public abstract Task <WebResults> SearchAsync(string query, WebResults.Type searchType = WebResults.Type.Song,
                                               int limit = 20, string pageToken = null);