Unofficial Java library, which simplifies the use of the official SoundCloud Java API wrapper.
SoundCloud dropped the support for the official SoundCloud Java API wrapper, which is a primary dependency.
- soundcloud-0.2.1-jar-with-dependencies.jar (see the list of dependencies)
- soundcloud-0.2.1.jar
Open and read the pom.xml file for all necessary dependencies.
There are several internal dependencies:
- java-api-wrapper-1.3.1-all.jar (
gradle jarAll
) by SoundCloud - com.google.code.gson by Google
- com.googlecode.json-simple
Add the library jar to your classpath, import it and create a new instance of SoundCloud
. Finally connect with specified application settings and your personal login data.
import de.voidplus.soundcloud.*;
SoundCloud soundcloud = new SoundCloud(
"appClientId",
"appClientSecret"
);
// Or, if you need any permissions:
SoundCloud soundcloud = new SoundCloud(
"appClientId",
"appClientSecret",
"userLoginMail",
"userLoginPass"
);
// Or:
SoundCloud soundcloud = new SoundCloud(
"appClientId",
"appClientSecret"
);
soundcloud.login(
"userLoginMail",
"userLoginPass"
);
The service of Apigee is proper for learning and testing the official SoundCloud API. All API calls are mapped to REST methods:
public get( String path [, String[] filters] ) <T>:T // GET
public put( String path [, Object value] ) <T>:T // PUT
public post( String path, Object value ) <T>:T // POST
public delete( String path ) Boolean // DELETE
You can use the following API calls and/or helpers ("→" ⇔ HTTP 303 See Other Redirect):
User.java:
User get("me") // /me
getMe()
ArrayList<User> get("users") // /users
getUsers([Integer offset, Integer limit])
User get("users/{contact_id}") // /users/{contact_id}
getUser({contact_id})
ArrayList<User> get("me/followings") // /me/followings
getMeFollowing([Integer offset, Integer limit])
User get("me/followings/{contact_id}") // /me/followings/{contact_id}
getMeFollowing({contact_id}) // → /users/{contact_id}
ArrayList<User> get("me/followers") // /me/followers
getMeFollowers([Integer offset, Integer limit])
User get("me/followers/{contact_id}") // /me/followers/{contact_id}
getMeFollower({contact_id}) // → /users/{contact_id}
ArrayList<User> get("groups/{group_id}/users") // /groups/{group_id}/users
ArrayList<User> get("groups/{group_id}/moderators") // /groups/{group_id}/moderators
ArrayList<User> get("groups/{group_id}/members") // /groups/{group_id}/members
ArrayList<User> get("groups/{group_id}/contributors") // /groups/{group_id}/contributors
// 2271 = SoundCloud Sweetness ;)
Track.java:
Track get("tracks/{track_id}") // /tracks/{track_id}
getTrack({track_id})
ArrayList<Track> get("tracks") // /tracks
getTracks([Integer offset, Integer limit])
ArrayList<Track> get("me/tracks") // /me/tracks
getMeTracks([Integer offset, Integer limit])
ArrayList<Track> get("me/favorites") // /me/favorites
getMeFavorites([Integer offset, Integer limit])
ArrayList<Track> get("groups/{group_id}/tracks") // /groups/{group_id}/tracks
getTracksFromGroup({group_id})
Playlist.java:
Playlist get("playlists/{playlist_id}") // /playlists/{playlist_id}
getPlaylist({playlist_id})
ArrayList<Playlist> get("playlists") // /playlists
getPlaylists([Integer offset, Integer limit])
ArrayList<PlayList> get("me/playlists") // /me/playlists
getMePlaylists([Integer offset, Integer limit])
Group.java:
Group get("groups/{group_id}") // /groups/{group_id}
getGroup({group_id})
ArrayList<Group> get("groups") // /groups
getGroups([Integer offset, Integer limit])
ArrayList<Group> get("me/groups") // /me/groups
getMeGroups([Integer offset, Integer limit])
Comment.java:
ArrayList<Comment> get("me/comments") // /me/comments
getMeComments([Integer offset, Integer limit])
ArrayList<Comment> get("tracks/{track_id}/comments") // /tracks/{track_id}/comments
getCommentsFromTrack({track_id})
User.java:
User put("me", User user) // /me
putMe(User user)
Track.java:
Track put("tracks/{track_id}", Track track) // /tracks/{track_id}
Boolean put("me/favorites/{track_id}") // /me/favorites/{track_id}
putFavoriteTrack({track_id})
Track.java:
Track post("tracks", Track track)) // /tracks
postTrack(Track track)
Comment.java:
Comment post("tracks/{track_id}/comments", Comment comment) // /tracks/{track_id}/comments
postCommentToTrack({track_id}, Comment comment)
User.java:
Boolean delete("me/followings/{contact_id}") // /me/followings/{contact_id}
Boolean delete("users/{user_id}/followings/{contact_id}") // /users/{user_id}/followings/{contact_id}
Track.java:
Boolean delete("tracks/{track_id}") // /tracks/{track_id}
deleteTrack({track_id})
Boolean delete("me/favorites/{track_id}") // /me/favorites/{track_id}
deleteFavoriteTrack({track_id})
Boolean delete("users/{user_id}/favorites/{track_id}") // /users/{user_id}/favorites/{track_id}
Read user details:
User me = soundcloud.getMe();
System.out.println(me);
System.out.println("ID: "+me.getId());
System.out.println("Username: "+me.getUsername());
System.out.println("Avatar-URL: "+me.getAvatarUrl());
Update user details:
User me = soundcloud.getMe();
// OR
// me = soundcloud.get("me");
me.setCity("Berlin");
me.setCountry("Germany");
me.setDescription("Text of description.");
me.setWebsite("http://www.soundcloud.de/");
me.setWebsiteTitle("SoundCloud");
me = soundcloud.putMe(me);
// OR
// me = soundcloud.put("me", me);
System.out.println(me);
Which sound do you like? Show all your favorites:
User me = soundcloud.getMe();
Integer count = me.getPublicFavoritesCount();
Integer limit = 50; // = max
Integer pages = ((int)count/limit)+1;
ArrayList<Track> all_tracks = new ArrayList<Track>();
for(int i=0; i<pages; i++){
ArrayList<Track> temp_tracks = soundcloud.getMeFavorites((i*limit),limit);
// OR
// ArrayList<Track> temp_tracks = soundcloud.get("me/favorites", new String[] {
// "order", "created_at",
// "offset", Integer.toString(i*limit),
// "limit", Integer.toString(limit)
// });
all_tracks.addAll(temp_tracks);
}
for(Track track : all_tracks){
System.out.println(track.getTitle()+" (#"+track.getId()+")");
}
Like ~ Add a new track to your favorites:
ArrayList<Track> tracks = soundcloud.getTracks(0,3);
// OR
// ArrayList<Track> tracks = soundcloud.get("tracks", new String[] {
// "order", "created_at",
// "offset", "0",
// "limit", "3"
// });
Track track = tracks.get(0); // = ~random
Boolean add = soundcloud.putFavoriteTrack(track.getId());
// OR
// Boolean add = soundcloud.put("me/favorites/"+track.getId());
Unlike ~ Remove a track from your favorites:
Boolean removing = soundcloud.deleteFavoriteTrack(72688617);
// OR
// Boolean removing = soundcloud.delete("me/favorites/72688617")
if(removing){
System.out.println("Successful removing.");
}
Upload a new track:
Track track = soundcloud.postTrack(new Track("titel of the song", "path/to/file.mp3"));
// OR
// Track track = soundcloud.post("tracks", new Track("titel of the song!", "path/to/file.mp3"));
System.out.println(track.getTitle()+" (#"+track.getId()+")");
Delete a track (Bad example, because we love your music!):
Boolean deletion = soundcloud.deleteTrack(track.getId());
// OR
// Boolean deletion = soundcloud.delete("tracks/"+track.getId());
if(deletion){
System.out.println("Successful deletion.");
}
List the last ten streamable tracks:
ArrayList<Track> streamable_tracks = soundcloud.get("tracks", new String[] {
"order","created_at",
"filter","streamable",
"limit","10"
});
for(Track track : streamable_tracks){
System.out.println(track.getTitle()+" (#"+track.getId()+")");
}
Get the moderators of a group:
ArrayList<User> moderators = soundcloud.get("groups/2271/moderators");
for(User user : moderators){
System.out.println(user.getId());
}
Post a new comment:
Comment comment = new Comment("Nice track!"); // new Comment("Nice track!", 120) // +timestamp
comment = soundcloud.postCommentToTrack(70734856, comment);
// OR
// comment = soundcloud.post("tracks/70734856/comments", comment);
System.out.println(comment);
Search track:
ArrayList<Track> result = soundcloud.findTrack("Chromatics");
if(result!=null){
System.out.println("Tracks: "+result.size());
for(Track track:result){
System.out.println(track);
}
}
Search user:
ArrayList<User> result = soundcloud.findUser("damovi");
if(result!=null){
System.out.println("Users: "+result.size());
}
Search group:
ArrayList<Group> result = soundcloud.findGroup("SoundCloud");
if(result!=null){
System.out.println("Groups: "+result.size());
}
Don't be shy and feel free to contact me on Twitter: @darius_morawiec
MIT License by SoundCloud. The library is Open Source Software released under the MIT License.
You can find the SoundCloud for Processing library in a separate repository. That library is the core dependency of it.