示例#1
0
 Artist JsonToArtist(Soundcloud mediaProvider, JToken token)
 {
     return(new Artist(
                token ["id"].Value <string> (),
                token ["username"].Value <string> (),
                token ["avatar_url"].Value <string> (),
                mediaProvider
                ));
 }
示例#2
0
        public async Task <List <Playlist> > GetPlaylists(Soundcloud mediaProvider, Artist artist)
        {
            var client   = new HttpClient();
            var url      = new Uri($"{BaseUrl}users/{artist.UniqueId}/playlists?client_id={clientId}");
            var response = await client.GetStringAsync(url);

            var json = JArray.Parse(response);

            return(json.Select(token => JsonToPlaylist(mediaProvider, token)).ToList());
        }
示例#3
0
        public async Task <List <Track> > GetPopularTracks(Soundcloud mediaProvider, Artist artist)
        {
            var client   = new HttpClient();
            var url      = new Uri($"{BaseUrl}users/{artist.UniqueId}/tracks?client_id={clientId}");
            var response = await client.GetStringAsync(url);

            var soundcloudTracks = JArray.Parse(response);

            return(soundcloudTracks.Children()
                   .Select(token => JsonToTrack(mediaProvider, token))
                   .ToList());
        }
示例#4
0
        public async Task <IList <Artist> > SearchUsers(Soundcloud mediaProvider, string query)
        {
            var client   = new HttpClient();
            var url      = new Uri($"{BaseUrl}users?q={query}&client_id={clientId}&limit=20");
            var response = await client.GetStringAsync(url);

            var json = JArray.Parse(response);

            return(json.Children()
                   .Where(token => token ["track_count"].Value <int> () > 0)
                   .Select(token => JsonToArtist(mediaProvider, token))
                   .ToList());
        }
示例#5
0
        Playlist JsonToPlaylist(Soundcloud mediaProvider, JToken token)
        {
            var playlist = new Playlist(
                token ["id"].Value <string> (),
                token ["title"].Value <string> (),
                token ["created_at"].Value <DateTime> (),
                token ["last_modified"].Value <DateTime> (),
                token ["artwork_url"].Value <string> ());

            var tracks = token ["tracks"].Select(track_token => JsonToTrack(mediaProvider, track_token)).ToList();

            playlist.Tracks = tracks;

            return(playlist);
        }
示例#6
0
        Track JsonToTrack(Soundcloud mediaProvider, JToken json)
        {
            var track = new Track(
                json ["id"].Value <string> (),
                json ["title"].Value <string> (),
                json ["artwork_url"].Value <string> ()?.Replace("large", "t300x300"),
                TimeSpan.FromMilliseconds(json ["duration"].Value <int> ()),
                mediaProvider
                );

            track.ArtistId = json ["user_id"].Value <string> ();
            track.AudioUrl = $"{json ["stream_url"]}?client_id={clientId}";

            return(track);
        }
示例#7
0
        public async Task <List <Track> > SearchTracks(Soundcloud mediaProvider, string query)
        {
            try {
                var client   = new HttpClient();
                var url      = new Uri($"{BaseUrl}tracks?q={query}&types=original,recording&client_id={clientId}&limit=20");
                var response = await client.GetStringAsync(url);

                var json = JArray.Parse(response);

                return(json.Children()
                       .Where(token => token ["stream_url"].Value <string> () != null)
                       .Select(token => JsonToTrack(mediaProvider, token))
                       .ToList());
            } catch (Exception e) {
                return(new List <Track> ());
            }
        }