Exemplo n.º 1
0
        public static async Task <SearchResponse> PerformRandomSearch(
            SearchRequest.Types type,
            SpotifyAPICredentials spotifyAPICredentials,
            string genre = "")
        {
            var buildSearchQueryResult = BuildSearchQuery(genre);
            var searchQuery            = buildSearchQueryResult;
            var offset = RandInt(0, 999);

            return(await PerformSearch(type, searchQuery, 50, offset, spotifyAPICredentials).ConfigureAwait(false));
        }
Exemplo n.º 2
0
        private static bool IsValidSearchResponse(SearchRequest.Types type, SearchResponse searchResponse)
        {
            if ((type == SearchRequest.Types.Artist && searchResponse.Artists.Items.Count == 0) ||
                (type == SearchRequest.Types.Album && searchResponse.Albums.Items.Count == 0) ||
                (type == SearchRequest.Types.Track && searchResponse.Tracks.Items.Count == 0))
            {
                return(false);
            }

            return(true);
        }
Exemplo n.º 3
0
        public string RunCommand()
        {
            string query = _arguments.FirstOrDefault(x => x.Key == "query").Value;

            SearchRequest.Types types = SearchRequest.Types.All;

            if (_arguments.ContainsKey("track"))
            {
                types = SearchRequest.Types.Track;
            }

            SearchRequest request = new SearchRequest(types, query);

            var res = _spotify.Search.Item(request).Result;

            string trackNames = "";

            foreach (var track in res.Tracks.Items)
            {
                trackNames += $"{track.Name}\n";
            }

            return(trackNames);
        }
Exemplo n.º 4
0
        public static async Task <SearchResponse> PerformSearch(
            SearchRequest.Types type,
            string searchQuery,
            int limit,
            int offset,
            SpotifyAPICredentials spotifyAPICredentials,
            bool retryDueToException = false,
            int retry = 0)
        {
            SearchResponse search;

            try
            {
                var spotify = CreateSpotifyClient(spotifyAPICredentials);
                search = await spotify.Search.Item(new SearchRequest(type, searchQuery)
                {
                    Limit  = limit,
                    Offset = offset
                });
            }
            catch (Exception err)
            {
                if (!retryDueToException)
                {
                    return(await PerformSearch(
                               type,
                               searchQuery,
                               limit,
                               offset,
                               spotifyAPICredentials,
                               true).ConfigureAwait(false));
                }
                else
                {
                    if (err is APIException)
                    {
                        Console.Out.WriteLine("Failure due to Spotify API");
                    }
                    throw;
                }
            }

            if (!IsValidSearchResponse(type, search))
            {
                if (retry == 5 || offset < limit)
                {
                    return(search);
                }
                else
                {
                    retry++;
                    offset = (int)(offset * (0.1f * retry));
                    return(await PerformSearch(
                               type,
                               searchQuery,
                               limit,
                               offset,
                               spotifyAPICredentials,
                               retry : retry).ConfigureAwait(false));
                }
            }

            return(search);
        }