コード例 #1
0
        /// <summary>
        /// Searches for specified terms.
        /// </summary>
        /// <param name="searchQuery">What to search for.</param>
        /// <param name="type">What platform will search for.</param>
        /// <returns>A collection of tracks matching the criteria.</returns>
        public Task <LavalinkLoadResult> GetTracksAsync(string searchQuery, LavalinkSearchType type = LavalinkSearchType.Youtube)
        {
            string prefix;

            if (type == LavalinkSearchType.Youtube)
            {
                prefix = "ytsearch";
            }
            else
            {
                prefix = "scsearch";
            }

            var str       = WebUtility.UrlEncode($"{prefix}:{searchQuery}");
            var tracksUri = new Uri($"{this.RestEndpoint.ToHttpString()}{Endpoints.LOAD_TRACKS}?identifier={str}");

            return(this.InternalResolveTracksAsync(tracksUri));
        }
コード例 #2
0
        /// <summary>
        /// Searches for specified terms.
        /// </summary>
        /// <param name="searchQuery">What to search for.</param>
        /// <param name="type">What platform will search for.</param>
        /// <returns>A collection of tracks matching the criteria.</returns>
        public Task <LavalinkLoadResult> GetTracksAsync(string searchQuery, LavalinkSearchType type = LavalinkSearchType.Youtube)
        {
            string prefix;

            if (type == LavalinkSearchType.Youtube)
            {
                prefix = "ytsearch";
            }
            else
            {
                prefix = "scsearch";
            }

            var str       = WebUtility.UrlEncode($"{prefix}:{searchQuery}");
            var tracksUri = new Uri($"http://{this.Configuration.RestEndpoint}/loadtracks?identifier={str}");

            return(this.InternalResolveTracksAsync(tracksUri));
        }
コード例 #3
0
        public static async Task <LavalinkTrack> UriToTrack(CommandContext ctx, string link, LavalinkSearchType searchType = LavalinkSearchType.Youtube)
        {
            if (searchType == LavalinkSearchType.Youtube)
            {
                var lava = ctx.Client.GetLavalink();
                var node = lava.GetIdealNodeConnection();

                Uri uri    = new Uri(link);
                var result = await node.Rest.GetTracksAsync(uri);

                if (result.LoadResultType == LavalinkLoadResultType.LoadFailed)
                {
                    await ctx.Channel.SendMessageAsync($"Couldn't load track with url {link}");

                    return(null);
                }

                var enumirator = result.Tracks.GetEnumerator();
                enumirator.MoveNext();

                return(enumirator.Current);
            }
            else
            {
                string[] splitSearch = link.Split("/");
                link = $"{splitSearch[splitSearch.Length - 1]} - {splitSearch[splitSearch.Length - 2]}";

                return(await SearchToTrack(ctx, link, LavalinkSearchType.SoundCloud));
            }
        }
コード例 #4
0
        public static async Task <LavalinkTrack> SearchToTrack(CommandContext ctx, string search, LavalinkSearchType searchType = LavalinkSearchType.Youtube)
        {
            var lava = ctx.Client.GetLavalink();
            var node = lava.GetIdealNodeConnection();

            var result = await node.Rest.GetTracksAsync(search, searchType);

            if (result.LoadResultType == LavalinkLoadResultType.LoadFailed || result.LoadResultType == LavalinkLoadResultType.NoMatches)
            {
                await ctx.Channel.SendMessageAsync($"Couldn't load track with name {search}");

                return(null);
            }

            var enumirator = result.Tracks.GetEnumerator();

            enumirator.MoveNext();
            return(enumirator.Current);
        }
コード例 #5
0
 /// <summary>
 /// Searches for specified terms.
 /// </summary>
 /// <param name="searchQuery">What to search for.</param>
 /// <param name="type">What platform will search for.</param>
 /// <returns>A collection of tracks matching the criteria.</returns>
 public Task <LavalinkLoadResult> GetTracksAsync(string searchQuery, LavalinkSearchType type = LavalinkSearchType.Youtube)
 => this.Node.Rest.GetTracksAsync(searchQuery, type);