Beispiel #1
0
        public SCTrack UploadTrack(Stream trackFileStream, string title, string description, SCSharing sharing, Stream artworkFileStream)
        {
            var files = new List <File>();

            if (artworkFileStream != null)
            {
                var artworkFile = File.Build(artworkFileStream, "track[artwork_data]");
                files.Add(artworkFile);
            }

            var trackFile = File.Build(trackFileStream, "track[asset_data]");

            files.Add(trackFile);

            var parameters = new Dictionary <string, object>
            {
                { "track[title]", title },
                { "track[description]", description },
                { "track[sharing]", sharing.GetParameterName() }
            };

            var uploadedTrack = soundCloudRawClient.Upload <Track>(prefix, string.Empty, parameters, files: files.ToArray());

            return(trackConverter.Convert(uploadedTrack));
        }
Beispiel #2
0
        public SCTrack[] GetTracks(SCExploreCategory category, int offset = 0, int limit = 10)
        {
            paginationValidator.Validate(offset, limit);

            var parameters = new Dictionary <string, object>();

            parameters.Add("kind", "top");

            //Build genre paramter
            var processed = (category == null || category.Name == "Popular+Music") ? "all-music" : new String(System.Uri.UnescapeDataString(category.Name).Where(ch => Char.IsLetterOrDigit(ch)).ToArray()).ToLower();
            var g         = string.Format("soundcloud%3Agenres%3A{0}", processed);

            parameters.Add("genre", g);
            parameters.Add("linked_partitioning", 1);

            var tracks = soundCloudRawClient.Request <ChartTrackList>(prefix, command, HttpMethod.Get, parameters: parameters.SetPagination(offset, limit), domain: Internal.Client.Helpers.Domain.ApiV2, responseType: string.Empty);

            return(tracks.Tracks.Select(ct => trackConverter.Convert(ct.Track)).ToArray());
        }
        public SCTrack[] GetTracks(SCExploreCategory category, int offset = 0, int limit = 10)
        {
            paginationValidator.Validate(offset, limit);

            var parameters = new Dictionary <string, object> {
                { "kind", "top" }
            };

            var categoryName = category.GetName();

            var processed = categoryName == null || categoryName == "Popular+Music"
                ? "all-music"
                : new string(Uri.UnescapeDataString(categoryName).Where(char.IsLetterOrDigit).ToArray()).ToLower();
            var genreFormatQuery = $"soundcloud%3Agenres%3A{processed}";

            parameters.Add("genre", genreFormatQuery);
            parameters.Add("linked_partitioning", 1);

            var tracks = soundCloudRawClient.Request <ChartTrackCollection>(prefix, command, HttpMethod.Get, parameters: parameters.SetPagination(offset, limit), domain: Internal.Client.Helpers.Domain.ApiV2, responseType: string.Empty);

            return(tracks.Collection.Select(ct => trackConverter.Convert(ct.Track)).ToArray());
        }
Beispiel #4
0
        public SCTrack GetFavorite(string favoriteTrackId)
        {
            var track = soundCloudRawClient.Request <Track>(prefix, "favorites/" + favoriteTrackId, HttpMethod.Get);

            return(trackConverter.Convert(track));
        }
        public SCTrack GetPendingTrack(string trackId)
        {
            var track = soundCloudRawClient.Request <Track>(prefix, string.Format("pending_tracks/{0}", trackId), HttpMethod.Get);

            return(trackConverter.Convert(track));
        }
Beispiel #6
0
        public SCTrack GetTrack()
        {
            var track = GetInternalTrack();

            return(trackConverter.Convert(track));
        }
        public SCTrack GetTrack(string url)
        {
            var track = ResolveUrl <Track>(url);

            return(trackConverter.Convert(track));
        }