/// <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)); }
/// <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)); }
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)); } }
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); }
/// <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);