Пример #1
0
        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());
                }
            }
        }
Пример #2
0
        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());
        }