Project

mixcloud

0.03
No commit activity in last 3 years
No release in over 3 years
Ruby wrapper of the Mixcloud API. Visit http://www.mixcloud.com/developers/documentation/ for more info
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 1.3.0
>= 2.7.0

Runtime

>= 1.6.1
>= 1.6.7
 Project Readme

Mixcloud¶ ↑

The Mixcloud gem is a ruby wrapper of the Mixcloud.com API. It enables you to create Ruby objects of Mixcloud resources such as Cloudcast, Artist, etc. by providing their API urls.

Furthermore, it provides a Search functionality which returns Mixcloud resources as an array of Ruby objects instead of JSON data. For more info check

This gem has not yet been tested with a Rails app. So it is still pretty much a beta. But feel free to test it, use it, drop me a note if you think something needs to be changed or added, or if something isn’t quite working.

Installation¶ ↑

sudo gem install mixcloud

And then require Mixcloud

require 'mixcloud'

# Examples

makoto = Mixcloud::User.new('http://api.mixcloud.com/makoto')
makoto.cloudcasts_url         # => 'http://api.mixcloud.com/makoto/cloudcasts/'

cinematic_mix = Mixcloud::Cloudcast.new('http://api.mixcloud.com/rico-casazza/cinematic-mix-vol-ii/')
cinematic_mix.tags            # => ["http://api.mixcloud.com/tag/cinematic/?metadata=1",
                                    "http://api.mixcloud.com/tag/dub-chill-out-downtempo/?metadata=1", 
                                    "http://api.mixcloud.com/tag/soundscape/?metadata=1",
                                    "http://api.mixcloud.com/tag/soundtrack/?metadata=1", 
                                    "http://api.mixcloud.com/tag/trip-hop/?metadata=1"]

Usage¶ ↑

Search functionality¶ ↑

The Mixcloud gem provide a search functionality for the following Mixcloud resources: Artist, Cloudcast, User and Tag.

Say if you are looking for an artist named ‘Dorian Concept’:

Mixcloud::Search.find_artist('dorian concept')

It will return an array of Artist objects, all with the words ‘dorian concept’ in their names. Behind the scenes, Mixcloud::Search builds a query string for you, so you don’t have to worry about whitespaces. Same goes for:

Mixcloud::Search.find_cloudcast('some text')
Mixcloud::Search.find_user('some text')
Mixcloud::Search.find_tag('some text')

Create Mixcloud Resources¶ ↑

You can create Ruby objects of the following Mixcloud resources: Artist, Category, Cloudcast, Tag, Track and User. In order to do that, you must provide its API url to the constructor.

What do you mean by API url?¶ ↑

Let’s say you want to make a ruby object of the user Mary Anne Hobbs, and her public profile is on

http://www.mixcloud.com/MaryAnneHobbs/

By API url, I mean replacing the ‘www’ in her URL with ‘api’, so you get

http://api.mixcloud.com/MaryAnneHobbs/

Then in your code:

mary_anne_hobbs = Mixcloud::User.new('http://api.mixcloud.com/MaryAnneHobbs/')

Another note regarding the API url, when you enter the API url in the browser, you will see a bunch of data in JSON. But when you append the API url with ‘?metadata=1’, thus

'http://api.mixcloud.com/MaryAnneHobbs/?metadata=1'

, then you will see.… well, more useful data.

What you need to know is that the Mixcloud gem automatically append ‘?=metadata’ to the url that you provide to the constructor, so you don’t have to do it yourself. But even when you do, you won’t break anything.

Associations¶ ↑

Certain Mixcloud objects have associations, for example, a Cloudcast belongs to a User. In most applications, you can call #user_id to retrieve that user. However, if you look at the Mixcloud API, the identifier is actually an URL. So in this gem, you will call

@cloudcast.user_url

to retrieve the API url of the associated user. It does not return a User object, because I believe that it is a responsibility that belongs to your web-app. However, by providing you the API url, it does make it easier for you to build that object.

There is one exception to that rule! A Cloudcast has many Sections, but if you look at the Mixcloud API, it does not treat Section as a resource and they don’t have unique URLs. In this case, when you call:

@cloudcast.sections

For more information regarding associations, check out the documentation below.

Resources¶ ↑

Most of the methods are named after the JSON data retrieved from the Mixcloud API. Here is a list of classes and their methods.

Artist¶ ↑

Mixcloud::Artist contains the following:

Instance methods:

# To return the API url with the most popular, latest, or the hottest cloudcasts for a specific artist

@artist.popular_url
@artist.new_url
@artist.hot_url

Instance variables (defined at initialization):

@name, @key, @slug, @public_url, @api_url

Category¶ ↑

Mixcloud::Category contains the following:

Instance methods:

@category.small_picture_url
@category.large_picture_url
@category.medium_picture_url
@category.thumbnail_picture_url
@category.medium_mobile_picture_url
@category.userpick_users_url 
@category.userpick_cloudcasts_url
@category.users_url
@category.cloudcasts_url

Instance variables (defined at initialization):

@name, @format, @public_url, @api_url, @key, @slug

Cloudcast¶ ↑

Mixcloud::Cloudcast contains the following:

Instance methods:

@cloudcast.medium_picture_url
@cloudcast.extra_large_picture_url
@cloudcast.large_picture_url
@cloudcast.small_url
@cloudcast.medium_mobile_picture_url
@cloudcast.thumbnail_picture_url
@cloudcast.listeners_url
@cloudcast.similar_url
@cloudcast.favorites_url
@cloudcast.comments_url
@cloudcast.sections
@cloudcast.tag_urls

Instance variables (defined at initialization):

@listener_count, @name, @public_url, @api_url, @description, @updated_time, @play_count, @comment_count, 
@percentage_music, @key, @created_time, @audio_length, @slug, @favorite_count, @user_url

Association: A Cloudcast has many Sections:

@cloudcast.sections    # returns an array of Section objects. See Section for its attributes

A Cloudcast has many Tags:

@cloudcast.tag_urls    # returns an array of api-urls of tags (as string) associated with the cloudcast

A Cloudcast belongs to a User:

@cloudcast.user_url    # returns the api url of the associated user

Tag¶ ↑

Mixcloud::Tag contains the following:

Instance methods:

# To return the API url with the most popular, latest, or the hottest cloudcasts with a specific tag

@tag.popular_url
@tag.new_url
@tag.hot_url

Instance variables (defined at initialization):

@public_url, @api_url, @name, @key

Track¶ ↑

Mixcloud::Track contains the following:

Instance methods: # To return the API url with the most popular, latest, or the hottest cloudcasts featuring a specific track

@track.popular_url
@track.new_url
@track.hot_url

Instance variables (defined at initialization):

@public_url, @api_url, @name, @key, @slug, @artist_url

Associations: A Track belongs to an Artist:

@track.artist_url     # returns the api url of the associated artist

User¶ ↑

Mixcloud::User contains the following:

Instance methods:

@user.medium_picture_url
@user.extra_large_picture_url
@user.large_picture_url
@user.small_url
@user.medium_mobile_picture_url
@user.thumbnail_picture_url
@user.feed_url
@user.playlists_url
@user.comments_url
@user.followers_url
@user.favorites_url
@user.following_url
@user.cloudcasts_url
@user.listens_url

Instance variables (defined at initialization):

@username, @name, @cloudcast_count, @following_count, @public_url, @api_url, @listen_count, @key,
@follower_count, @favorite_count, @updated_time, @created_time, @city, @biog, @country

Mixcloud::Search contains the following:

Class methods:

Mixcloud::Seach.find_artist(string)
Mixcloud::Seach.find_cloudcast(string)
Mixcloud::Seach.find_user(string)
Mixcloud::Seach.find_tag(string)

Section¶ ↑

Mixcloud::Section contains the following:

When you call

@cloudcast.sections

, it creates an array of Sections. Each section has the instance variables defined:

@track_url, @position, @start_time, @section_type

License¶ ↑

Copyright © 2012 Alex Fong. Release under MIT license. See the attached License file.