Project

dm_cloud

0.0
No commit activity in last 3 years
No release in over 3 years
This gem will simplify usage of DailyMotion Cloud API, it represent api in ruby style, with automated handler for search and upload files
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.8.4
>= 0
~> 3.12
~> 2.8.0
>= 0
 Project Readme

DmCloud

Code Climate

I created this gem to simplify request and responses from DailyMotion Cloud API.
With this gem, you can :

  • get generated embed code as a string
  • get direct access url to your files (I used this to provide video flux to TV-connected application)
  • (Lists works, others on the way) create, delete, paginated lists of videos; with video informations (a/v encodings, bitrate, video lenght...)
  • (I'm working on ) CRUD on videos' meta-data

Installation

Add this line to your application's Gemfile:

gem 'dm_cloud', "0.0.60" #stable version

or
gem 'dm_cloud' # edge version

And then execute:

$ bundle

Or install it yourself as:

$ gem install dm_cloud

Usage

First, your will need to specify your :user_id, :api_key and your security level.
I used a file in APP_ROOT/config/initializers/conf.rb.
You can note the securitylevel, for more information about it, take a look at lib/dm_cloud/signing.rb.

# DAILYMOTION CLOUD SETTINGS
require 'dm_cloud'
DMC_USER_ID = 'your user id'
DMC_SECRET = 'your api key'
DMC_SECURITY_LEVEL = :none

DmCloud.configure( { 
  :user_key    =>     DMC_USER_ID,
  :secret_key =>      DMC_SECRET,
  :security_level =>  DMC_SECURITY_LEVEL
})

Description of security levels :

  • None:
    The signed URL will be valid for everyone
  • ASNUM:
    The signed URL will only be valid for the AS of the end-user.
    The ASNUM (for Autonomous System Number) stands for the network identification,
    each ISP have a different ASNUM for instance.
  • IP:
    The signed URL will only be valid for the IP of the end-user.
    This security level may wrongly block some users
    which have their internet access load-balanced between several proxies.
    This is the case in some office network or some ISPs.
  • User-Agent: Used in addition to one of the two former levels,
    this level a limit on the exact user-agent of the end-user.
    This is more secure but in some specific condition may lead to wrongly blocked users.
  • Use Once:
    The signed URL will only be usable once.
    Note: should not be used with stream URLs.
  • Country:
    The URL can only be queried from specified countrie(s).
    The rule can be reversed to allow all countries except some.
  • Referer:
    The URL can only be queried
    if the Referer HTTP header contains a specified value.
    If the URL contains a Referer header with a different value,
    the request is refused. If the Referer header is missing,
    the request is accepted in order to prevent from false positives as some browsers,
    anti-virus or enterprise proxies may remove this header.
  • Delegate:
    This option instructs the signing algorithm
    that security level information won’t be embeded into the signature
    but gathered and lock at the first use.

Second part, get you embed url :
It will return a string containing the iframe with the DailyMotion Cloud player.

DmCloud::Streaming.embed('your video id looks like a secret key')

Or how to get your direct url :
It will return a string containing the direct link to your file.

DmCloud::Streaming.url('your video id', ['asset_name'], {options})

The next parts will come soon, just need some time to finish it
and create corresponding tests.


Video explorer :

If you need to list your video you can use this method :

DmCloud::Media.list({:page => 1, :per_page => 10})

It will return videos information and more :

result to yaml :

'{"result": {  
  "list": [{  
    "embed_url": "http://api.DmCloud.net/player/embed/:your_id/:media_id",  
    "assets": {  
      "source": {  
        "status": "ready",  
        "video_fps": 25.0,  
        "file_extension": "mp4",  
        "video_fps_mode": "CFR",  
        "container": "MPEG-4",  
        "audio_samplerate": 44100,  
        "video_interlaced": false,
        "video_rotation": 0.0,  
        "video_bitrate": 1000618,  
        "created": 1347641702,  
        "audio_nbr_channel": 2,  
        "download_url": "http://cdn.DmCloud.net/route/http/:your_id/:media_id/source-1347634502.mp4?filename=my_video_name-source-1347634502.mp4&auth=1351277028-3-672hcu1m-3fcab065b9bf103e70d3883aa8c657be",  
        "video_aspect": 1.7777777777777777,  
        "video_height": 576,  
        "audio_bitrate": 128017,  
        "audio_codec": "AAC LC",  
        "file_size": 119133958,  
        "duration": 839,  
        "video_codec": "AVC",  
        "video_width": 1024,  
        "global_bitrate": 1134696}},  
        "created": 1347641696,  
        "meta": { "title": "my video 1 title"},  
        "frame_ratio": 1.7740740740740739,  
        "id": "5053616094739936ec0006af" }],  
  "pages": 1,
  "on_this_page": 3,
  "per_page": 10,
  "total": 3, 
  "page": 1}}'

As you can see, this give many information, you can submit a hash like this :

DmCloud::Media.list({:page => 1, :per_page => 10, :fields => {:meta => :title }, :assets => [:download_url, :created ]})

Contributing

Your welcome to share and enhance this gem.
This is my first one (and not the last one) but I know some mistakes might be done by myself.
I do my best and I'm open to all ideas or comments about my work.

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request