Bremen provides common search interface for some music websites. it supports YouTube, SoundCloud, MixCloud and Nicovideo
Installation
Add this line to your application's Gemfile:
gem 'bremen'
And then execute:
$ bundle
Or install it yourself as:
$ gem install bremen
Setting
As far as SoundCloud concerned, you need to set your app's client id before using.
Bremen::Soundcloud.client_id = 'your_client_id'
Alternately, you can set 'SOUNDCLOUD_CLIENT_ID' environment variable.
Usage
Retrieving a single track
call .find
method with uid(unique key) or url.
Bremen::Youtube.find('XXXXXXXXXXX')
Bremen::Youtube.find('http://www.youtube.com/watch?v=XXXXXXXXXXX')
Bremen::Soundcloud.find('1111111')
Bremen::Soundcloud.find('http://soundcloud.com/author/title')
Bremen::Mixcloud.find('/author/title/')
Bremen::Mixcloud.find('http://www.mixcloud.com/author/title/')
Bremen::Nicovideo.find('sm1111111')
Bremen::Nicovideo.find('http://www.nicovideo.jp/watch/sm1111111')
Retrieving multiple tracks
call .search
method with keyword.
Bremen::Youtube.search(keyword: 'Perfume')
Optional params
You can add optional parameters for filtering. But it doesn't support all official API's filters.
Bremen::Youtube.search(keyword: 'KyaryPamyuPamyu', order: 'relevance', limit: 10)
Track object
Retrieving methods return Track object(s).
attribute | type | description |
---|---|---|
uid | String | unique key for each site |
url | String | |
title | String | |
author | Author Object | uid/url/name/thumbnail_url |
length | Integer | duration of track |
thumbnail_url | String | thumbnail image |
created_at | Time | released datetime |
updated_at | Time | modified datetime |
API references
- Reference Guide: Data API Protocol - YouTube — Google Developers
- Docs - API - Reference - SoundCloud Developers
- API documentation | Mixcloud
Supported versions
- Ruby 1.9.3 or higher
Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request