public async Task <IResolveStrategy> GetResolveStrategy(string query, MusicType?musicType) { await Task.Yield(); //for async warning switch (musicType) { case MusicType.YouTube: return(new YoutubeResolveStrategy()); case MusicType.Radio: return(new RadioResolveStrategy()); case MusicType.Local: return(new LocalSongResolveStrategy()); case MusicType.Soundcloud: return(new SoundcloudResolveStrategy(_sc)); default: if (_sc.IsSoundCloudLink(query)) { return(new SoundcloudResolveStrategy(_sc)); } else if (RadioResolveStrategy.IsRadioLink(query)) { return(new RadioResolveStrategy()); } // maybe add a check for local files in the future else { return(new YoutubeResolveStrategy()); } } }
public async Task <SongInfo> ResolveSong(string query) { var svideo = !_sc.IsSoundCloudLink(query) ? await _sc.GetVideoByQueryAsync(query).ConfigureAwait(false) : await _sc.ResolveVideoAsync(query).ConfigureAwait(false); if (svideo == null) { return(null); } return(await svideo.GetSongInfo()); }