Project

clarify

0.0
No commit activity in last 3 years
No release in over 3 years
Use the Clarify API to make your audio and video files searchable in just a few lines of code.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 1.5
~> 1.3.0
~> 10.0
~> 3.0
~> 0.29.0
~> 0.9.0
 Project Readme

Build Status Code Climate

How To

You can get started in minutes using our Quickstarts:

http://clarify.io/docs/quickstarts/

Basic Setup and Examples

Require the library and initialize the Client, which takes care of configuration and http client setup.

# setup.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: 'docs-api-key')
pp clarify

Search for bundles

# bundles_search.rb
require 'clarify'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

results = clarify.bundles.search('plane')

results.each do |bundle_results, bundle_url|
  # Fetch the bundle:
  bundle = clarify.get(bundle_url)

  puts "#{bundle.name} - #{bundle_url}"
  bundle_results['term_results'].each do |term_result|
    term_result['matches'].each do |match|
      type = match['type']
      match['hits'].each do |hit|
        puts "\tmatched #{type} content at #{hit['start']} to #{hit['end']}"
      end
    end
  end
end

Example output of bundles_search.rb:

Obama-2004-DNC-Keynote - /v1/bundles/51ee9932989c47d3adf734c4e467c83f
	matched audio content at 951.62 to 951.82
How-Schools-Kill-Creativity - /v1/bundles/6864abafeee8458bb9902628ee270cae
	matched audio content at 485.92 to 486.11
The-Surprising-Science-of-Happiness - /v1/bundles/d6dcddf1066b4dd4bed78334e553e233
	matched audio content at 80.94 to 81.57

Get a list of bundles

# list_bundles.rb
require 'clarify'
clarify = Clarify::Client.new(api_key: 'docs-api-key')

clarify.bundles.fetch.each do |bundle_url|
  puts " - #{bundle_url}"
end

Example output of list_bundles.rb:

 - /v1/bundles/d6dcddf1066b4dd4bed78334e553e233
 - /v1/bundles/f87a4e7928a84cf192091a337dbbdd80
 - /v1/bundles/cbc77abbc54e4cc686d65156fe1d29a3
 - /v1/bundles/6864abafeee8458bb9902628ee270cae
 - /v1/bundles/75afdd5a5af74a559b8381c22ead1047
 - /v1/bundles/ae5fbaa351e44897a211c0c9f097ffba
 - /v1/bundles/0e81c313755248e3860c6f569498eb84
 - /v1/bundles/f145f401d14442c1838d04764c5a5bf1
 - /v1/bundles/41266fd35e6f4cf78c6040dd24b9c34d
 - /v1/bundles/68bca9f916e846c79ccd2b8079afc2f4

Fetch a particular bundle

# bundle_fetch.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
bundle = clarify.get(bundle_url)
puts "Bundle Name: #{bundle.name}"
pp bundle

Example output of bundle_fetch.rb:

Bundle Name: The-Surprising-Science-of-Happiness
#<Clarify::Responses::Bundle:0x007f65808368b8
 @body=
  {"id"=>"d6dcddf1066b4dd4bed78334e553e233",
   "version"=>1,
   "name"=>"The-Surprising-Science-of-Happiness",
   "created"=>"2015-04-21T18:13:47.377Z",
   "updated"=>"2015-04-21T18:13:47.377Z",
   "_class"=>"Bundle",
   "_links"=>
    {"self"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"},
     "curies"=>
      [{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
     "clarify:metadata"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/metadata"},
     "clarify:tracks"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/tracks"},
     "clarify:insights"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"}}},
 @response=#<Net::HTTPOK 200 OK readbody=true>>

Fetch a particular bundle's insight list

# bundle_insight_list.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

bundle_url = '/v1/bundles/d6dcddf1066b4dd4bed78334e553e233'
bundle = clarify.get(bundle_url)

bundle_insights_url = bundle.relation('clarify:insights')

puts "Insights for Bundle Name: #{bundle.name} (#{bundle_insights_url})"
insights = clarify.get(bundle_insights_url)
pp insights
puts '-----------'
insights.each do |insight, insight_url|
  puts "Insight #{insight} (#{insight_url})"
  insight = clarify.get(insight_url)
  pp insight
  puts ''
  puts ''
  puts ''
end

Example output of bundle_insight_list.rb:

Insights for Bundle Name: The-Surprising-Science-of-Happiness (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights)
#<Clarify::Responses::Insights:0x007f710e256760
 @body=
  {"bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
   "created"=>"2015-04-21T18:13:47.388Z",
   "updated"=>"2015-05-16T20:39:27.740Z",
   "_class"=>"Insights",
   "_links"=>
    {"self"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
     "parent"=>{"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"},
     "insight:spoken_words"=>
      {"href"=>
        "/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89"},
     "insight:spoken_keywords"=>
      {"href"=>
        "/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec"},
     "curies"=>
      [{"href"=>"/docs/insights/{rel}",
        "name"=>"insight",
        "templated"=>true}]}},
 @response=#<Net::HTTPOK 200 OK readbody=true>>
-----------
Insight insight:spoken_words (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89)
#<Clarify::Responses::SpokenWordsInsight:0x007f710e226b78
 @body=
  {"id"=>"c1ea412ef6aa434dbe05df12f97b9f89",
   "bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
   "name"=>"spoken_words",
   "status"=>"ready",
   "created"=>"2015-04-21T18:13:50.087Z",
   "updated"=>"2015-04-21T18:13:50.090Z",
   "track_data"=>
    [{"spoken_duration"=>1189.48,
      "word_count"=>3709,
      "spoken_duration_percent"=>0.93}],
   "_class"=>"SpokenWordsInsight",
   "_links"=>
    {"self"=>
      {"href"=>
        "/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/c1ea412ef6aa434dbe05df12f97b9f89"},
     "curies"=>
      [{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
     "parent"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
     "clarify:bundle"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"}}},
 @response=#<Net::HTTPOK 200 OK readbody=true>>



Insight insight:spoken_keywords (/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec)
#<Clarify::Responses::SpokenKeywordsInsight:0x007f710e197ea0
 @body=
  {"id"=>"b83668e8089148b7a5c96b1b045637ec",
   "bundle_id"=>"d6dcddf1066b4dd4bed78334e553e233",
   "name"=>"spoken_keywords",
   "status"=>"ready",
   "created"=>"2015-05-16T20:39:27.739Z",
   "updated"=>"2015-05-16T20:39:27.741Z",
   "track_data"=>
    [{"keywords"=>
       [{"term"=>"one", "count"=>43, "weight"=>1},
        {"term"=>"happiness", "count"=>27, "weight"=>0.628},
        {"term"=>"like", "count"=>23, "weight"=>0.535},
        {"term"=>"can", "count"=>20, "weight"=>0.465},
        {"term"=>"know", "count"=>18, "weight"=>0.419},
        {"term"=>"people", "count"=>17, "weight"=>0.395},
        {"term"=>"really", "count"=>16, "weight"=>0.372},
        {"term"=>"right", "count"=>15, "weight"=>0.349},
        {"term"=>"2", "count"=>14, "weight"=>0.326},
        {"term"=>"make", "count"=>13, "weight"=>0.302},
        {"term"=>"change", "count"=>13, "weight"=>0.302},
        {"term"=>"us", "count"=>12, "weight"=>0.279},
        {"term"=>"say", "count"=>11, "weight"=>0.256},
        {"term"=>"just", "count"=>11, "weight"=>0.256},
        {"term"=>"better", "count"=>10, "weight"=>0.233},
        {"term"=>"much", "count"=>10, "weight"=>0.233},
        {"term"=>"now", "count"=>10, "weight"=>0.233},
        {"term"=>"course", "count"=>10, "weight"=>0.233},
        {"term"=>"3", "count"=>10, "weight"=>0.233},
        {"term"=>"get", "count"=>9, "weight"=>0.209}]}],
   "_class"=>"SpokenKeywordsInsight",
   "_links"=>
    {"self"=>
      {"href"=>
        "/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights/b83668e8089148b7a5c96b1b045637ec"},
     "curies"=>
      [{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
     "parent"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233/insights"},
     "clarify:bundle"=>
      {"href"=>"/v1/bundles/d6dcddf1066b4dd4bed78334e553e233"}}},
 @response=#<Net::HTTPOK 200 OK readbody=true>>



Get a list of bundles and their names

# bundles_list_fetch.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

bundles = clarify.bundles.fetch

bundles.each do |url|
  bundle = clarify.get(url)
  puts " - Bundle Name: #{bundle.name}"
end

Example output of bundles_list_fetch.rb:

 - Bundle Name: The-Surprising-Science-of-Happiness
 - Bundle Name: GWB-2004-Victory-Speech
 - Bundle Name: harvard-sentences-2
 - Bundle Name: How-Schools-Kill-Creativity
 - Bundle Name: MLK-I-Have-a-Dream
 - Bundle Name: dorothyandthewizardinoz_01
 - Bundle Name: How-Great-Leaders-Inspire-Action
 - Bundle Name: The-Happy-Secret-to-Better-Work
 - Bundle Name: FDR-Statue-of-Liberty
 - Bundle Name: Reagan-Challenger-Disaster

Get a list of tracks and the URL of their original media

# bundles_show_tracks.rb
require 'clarify'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

clarify.bundles.fetch.each do |bundle_url|
  tracks_url = clarify.get(bundle_url).relation('clarify:tracks')

  clarify.get(tracks_url).each do |track|
    puts " - #{track['media_url']}"
  end
end

Example output of bundles_show_tracks.rb:

 - http://media.clarify.io/video/presentations/DanGilbert-TED2004-The-Surprising-Science-of-Happiness.mp4
 - http://media.clarify.io/audio/speeches/GWB-2004-Victory-Speech.mp3
 - http://media.clarify.io/audio/samples/harvard-sentences-2.wav
 - http://media.clarify.io/video/presentations/SirKenRobinson-TED2006-How-Schools-Kill-Creativity.mp4
 - http://media.clarify.io/audio/speeches/MLK-I-Have-a-Dream.mp3
 - http://media.clarify.io/audio/books/dorothyandthewizardinoz_01_baum_64kb.mp3
 - http://media.clarify.io/video/presentations/SimonSinek-TEDxPugetSound-How-Great-Leaders-Inspire-Action.mp4
 - http://media.clarify.io/video/presentations/ShawnAchor-TEDxBloomington-The-Happy-Secret-to-Better-Work.mp4
 - http://media.clarify.io/audio/speeches/FDR-Statue-of-Liberty.mp3
 - http://media.clarify.io/audio/speeches/Reagan-Challenger-Disaster.mp3

Create a bundle

Here you will need your own API key. Creating the bundle will return a 204, which means it has been Created, but is not done processing.

# bundle_create.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: ENV['CLARIFY_API_KEY'])

created_bundle = clarify.bundles.create!(
  name: 'Harvard Sentences #1',
  media_url: 'http://media.clarify.io/audio/samples/harvard-sentences-1.wav'
)

pp created_bundle

Example output of bundle_create.rb:

#<Clarify::Response:0x007fd0740a7278
 @body=
  {"id"=>"1bf2f176592144398d799bfa2298f629",
   "_class"=>"Ref",
   "_links"=>
    {"self"=>{"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629"},
     "curies"=>
      [{"href"=>"/docs/rels/{rel}", "name"=>"clarify", "templated"=>true}],
     "clarify:metadata"=>
      {"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/metadata"},
     "clarify:tracks"=>
      {"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/tracks"},
     "clarify:insights"=>
      {"href"=>"/v1/bundles/1bf2f176592144398d799bfa2298f629/insights"}}},
 @response=#<Net::HTTPCreated 201 Created readbody=true>>

More Advanced Usage

Get all of your searches over many pages

# searches_paged_over.rb
require 'clarify'
require 'pp'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

first_page = clarify.bundles.search('flight')
clarify.pager(first_page).each do |result, bundle_url|
  puts " - #{clarify.get(bundle_url).name}"
  pp result
end

Example output of searches_paged_over.rb:

 - Reagan-Challenger-Disaster
{"score"=>1,
 "term_results"=>
  [{"score"=>0.34,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>
        [{"start"=>34.29, "end"=>34.71}, {"start"=>172.59, "end"=>173.2}]}]}]}
 - How-Great-Leaders-Inspire-Action
{"score"=>0.632,
 "term_results"=>
  [{"score"=>0.286,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>
        [{"start"=>64.53, "end"=>65},
         {"start"=>72.9, "end"=>73.12},
         {"start"=>502.59, "end"=>502.81},
         {"start"=>625.4, "end"=>625.65},
         {"start"=>637.97, "end"=>638.25}]}]}]}
 - FDR-Statue-of-Liberty
{"score"=>0.566,
 "term_results"=>
  [{"score"=>0.155,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>[{"start"=>48.47, "end"=>48.73}]}]}]}
 - The-Happy-Secret-to-Better-Work
{"score"=>0.354,
 "term_results"=>
  [{"score"=>0.097,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>[{"start"=>652.78, "end"=>653.05}]}]}]}
 - The-Surprising-Science-of-Happiness
{"score"=>0.283,
 "term_results"=>
  [{"score"=>0.078,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>[{"start"=>78.05, "end"=>78.39}]}]}]}
 - On-the-Edge-of-Hypermedia
{"score"=>0.212,
 "term_results"=>
  [{"score"=>0.058,
    "matches"=>
     [{"type"=>"audio",
       "track"=>0,
       "hits"=>[{"start"=>2083.62, "end"=>2084.12}]}]}]}

Get all of your bundles over many pages

# bundles_paged_over.rb
require 'clarify'

clarify = Clarify::Client.new(api_key: 'docs-api-key')

first_page = clarify.bundles.fetch
clarify.pager(first_page).each do |bundle_url|
  puts " - #{clarify.get(bundle_url).name}"
end

Example output of bundles_paged_over.rb:

 - The-Surprising-Science-of-Happiness
 - GWB-2004-Victory-Speech
 - harvard-sentences-2
 - How-Schools-Kill-Creativity
 - MLK-I-Have-a-Dream
 - dorothyandthewizardinoz_01
 - How-Great-Leaders-Inspire-Action
 - The-Happy-Secret-to-Better-Work
 - FDR-Statue-of-Liberty
 - Reagan-Challenger-Disaster
 - Obama-2008-DNC-Speech
 - GWB-2000-Victory-Speech
 - Obama-2004-DNC-Keynote
 - FDR-Inaugural-Address
 - Mission-Critical-Innovation
 - On-the-Edge-of-Hypermedia
 - harvard-sentences-1