TED APIを触ってみる

TED - Welcome to TEDLabs

いつのまにかTEDのAPIが公開されていたので、少し触ってみる。

スポンサーリンク

昔は、APIが公開されてなかったので、スクレイピングで取得していた。 (htmlの構造が今は変わってるので、以下のコードでは取得できません)

TEDの英語原稿を取得する - ギークを夢見るじょーぶん男子

require 'rubygems'
require 'open-uri'
require 'json'
require 'nokogiri'

url = "http://www.ted.com/talks/brene_brown_listening_to_shame.html"
doc = Nokogiri::HTML(open(url))

ted_id = doc.xpath("//div[@id='share_and_save']").first.attribute("data-id")

open("http://www.ted.com/talks/subtitles/id/#{ted_id}/lang/en") do |f|
  json = JSON.parse(f.read)
  json['captions'].each do |j|
    puts j['content']
  end
end

TED APIを使い、以下のエンドポイント(言い方あってる?)を叩くと、結果がjsonで返ってくる。

https://api.ted.com/v1/talks.json?api-key=#{TED_API}&filter=slug:matt_cutts_try_something_new_for_30_day

この id が、動画の固有IDになる。すばらしい。

{"talks":
  [{"talk":
    {"id":1183,
     "event_id":64,
     "name":"Matt Cutts: Try something new for 30 days",
     "description":"Is there something you've always meant to do, wanted to do, but just ... haven't? Matt Cutts suggests: Try it for 30 days. This short, lighthearted talk offers a neat way to think about setting and achieving goals.",
     "slug":"matt_cutts_try_something_new_for_30_days",
     "native_language_code":"en",
     "published_at":"2011-07-01 15:14:00",
     "recorded_at":"2011-03-03 00:00:00",
     "updated_at":"2014-11-12 20:04:29",
     "released_at":"2014-11-12 20:04:29"}}],
    "counts":{"this":1,"total":1}
}

ドキュメント

メモ書き程度に書き散らかす。

TED I/O Docs

Events

TEDのイベントがあった箇所を取得する { “event”: { “id”: 1, “name”: “TED2008”, “description”: “”, “header_text”: “”, “slug”: “2008”, “url”: “”, “starts_at”: “2008-02-27 00:00:00” } }

Ratings

ランキング?

Rating Words

投票するときの、表現?

{ “rating_words”: [{ “rating_word”: { “id”: 1, “name”: “Beautiful” } }, { “rating_word”: { “id”: 2, “name”: “Confusing” } }, { “rating_word”: { “id”: 3, “name”: “Courageous” } }, { “rating_word”: { “id”: 7, “name”: “Funny” } }, { “rating_word”: { “id”: 8, “name”: “Informative” } }, { “rating_word”: { “id”: 9, “name”: “Ingenious” } }, { “rating_word”: { “id”: 10, “name”: “Inspiring” } }, { “rating_word”: { “id”: 11, “name”: “Longwinded” } }, { “rating_word”: { “id”: 21, “name”: “Unconvincing” } }, { “rating_word”: { “id”: 22, “name”: “Fascinating” } }, { “rating_word”: { “id”: 23, “name”: “Jaw-dropping” } }, { “rating_word”: { “id”: 24, “name”: “Persuasive” } }, { “rating_word”: { “id”: 25, “name”: “OK” } }, { “rating_word”: { “id”: 26, “name”: “Obnoxious” } }], “counts”: { “this”: 14, “total”: 14 } }

Speakers

:id スピーカの固有ID

スピーカーの情報を得る

Talks

Themes

題名、テーマに関する取得

Playlists

プレイリスト関連の検索

Query

カテゴリと検索文字列を指定して検索結果を得る

スポンサーリンク