iRSSの日記

はてなダイアリーiRSSの日記の続き

Pinterest APIが限定公開されたので、ためしてみる。


http://tijn.bo.lt/pinterest-api
に、リファレンスの残像があるのですが、まだ、一般公開はされていません。
Pinterest API @ Facebook
で限定公開され、APIの仕様決めもふくめて議論が始まっています。
仕様策定の段階で、外部の開発者も入れるのが、素敵な感じ。
この時点で、集まってくるPintarest AND WebAPI が好きな開発者と協調できれば、公開後には、エバンジェリスト的な役割をしてくれそうですものね。すばらしい!

限定公開だが、APIは呼び出せる。

認証が必要なAPIと、不要なAPIがあるが、すでに、APIを呼び出すことは可能。
試すのが簡単なのは認証なしでGETで呼び出せる。popularとsearch
https://api.pinterest.com/v2/popular/
https://api.pinterest.com/v2/search/pins/?query=tokyo
あたり。

これらのAPIだけでも、ビューアをつくるには十分ですね。
オリジナルのUIをカスタマイズできるということで、

↑とかつくって早速試し始めています。
まだ、HTTPでGETすらしてないのですが...
https://github.com/funami/mtl_pintarest
で始めてたりします。



レスポンスのサンプル

https://api.pinterest.com/v2/search/pins/?query=tokyoで呼び出したときのレスポンスです

{
   "query" : "tokyo",
   "status" : "success",
   "pagination" : {
      "next" : "/v2/search/pins/?query=tokyo&limit=25&page=2"
   },
   "counts" : {
      "pin" : 500,
      "user" : 0,
      "board" : 0
   },
   "pages" : 20     
   "search" : "search_pins",
   "pins" : [
      {
         "source" : "http://uponafold.com.au/blog/post/tokyo-by-tokyo-claska/#",
         "images" : {
            "thumbnail" : "http://media-cdn.pinterest.com/upload/138274651028587544_tFL34op6_t.jpg",
            "closeup" : "http://media-cdn.pinterest.com/upload/138274651028587544_tFL34op6_c.jpg",
            "board" : "http://media-cdn.pinterest.com/upload/138274651028587544_tFL34op6_b.jpg",
            "mobile" : "http://media-cdn.pinterest.com/upload/138274651028587544_tFL34op6_f.jpg"
         },
         "board" : {
            "is_following" : null,
            "name" : "reads",
            "url" : "/msquid/reads/",
            "id" : "138274719748063247",  
            "user_id" : "138274788467539969",
            "category" : "film_music_books",
            "description" : ""
         },
         "comments" : [],
         "sizes" : {
            "board" : {
               "height" : 200
            },
            "mobile" : {
               "width" : 530,
               "height" : 553
            }
         },
         "counts" : {
            "likes" : 0,
            "repins" : 2,
            "comments" : 0
         },
         "description" : "TOKYO BY TOKYO",
         "is_video" : false,
         "domain" : "uponafold.com.au",   
         "created_at" : "2010-07-13T11:53:05",
         "user" : {
            "image_large_url" : "http://media-cdn.pinterest.com/avatars/msquid_1329867348_o.jpg",
            "is_following" : null,
            "image_url" : "http://d30opm7hsgivgh.cloudfront.net/avatars/msquid_1329867348.jpg",
            "id" : "138274788467539969",  
            "full_name" : "mika = msquid",
            "username" : "msquid"
         },
         "id" : "138274651028587544",
         "is_repin" : false
      }
....ここにたくさん、pinがならぶ
   ]

}


↑このページを生成するのに、必要なデータとなるはず。

以下レスポンスを読み解いてみましたが、公式のリファレンスはないので、想像です。

リクエス

https://api.pinterest.com/v2/search/pins/?query=video&limit=1&page=1
名称 概要 サンプル
query 検索ワード video
limit レスポンスの件数 1以上 デフォルト:25 上限: 499 100
page 取得したいページ limit×(page-1)+1件目から取得できる 2

500件目以降のpinは存在してもエラーになって取得できないようです。なので、ループまわして、全部抜き出すようなことはできませんね。

curl "https://api.pinterest.com/v2/search/pins/?query=video&imit=1" -v

でヘッダを見ると

 HTTP/1.1 200 OK< Content-Type: application/javascript
 Date: Sat, 25 Feb 2012 01:38:18 GMT
 Server: nginx/0.8.54
 X-Ratelimit-Limit: 500
 X-Ratelimit-Remaining: 499
 Content-Length: 31632
 Connection: keep-alive

ということで、X-Ratelimit-Limitで上限、X-Ratelimit-Remainingで残りの件数がわかるようです。ヘッダで返すのはjsonをパースする前に知りたいとかあるのかな?

pinのレスポンス

要素名 概要 サンプル
source 元画像の掲載ページへのリンク http://uponafold.com.au/blog/post/tokyo-by-tokyo-claska/#
images 画像
-thumbnail サムネイル
-closeup 単体表示時に使われるサイズ
-board 一覧表示のときに使用されるサイズ
-mobile どこで使われているのか不明
board このpinのボード  
-is_following フォローしているかどうかかな?Authしないととれないと予想 null
-name ボード名 reads
-url ボードのURL相対パス /msquid/reads/
-id ボードのID 138274719748063247
-user_id ユーザーID 138274788467539969
-category カテゴリー film_music_books
-description ボードの説明文  
comments コメント配列  
-text コメントの内容  
-user ユーザー情報 image_large_url/is_following/image_url/id/full_name/username
-id コメントID 80713224449693149
sizes 画像のサイズ、mobileとboardがレスポンスされる模様。closeupも高さは可変だと思われるが、一覧では使わないので、高さがわからなくてもよいのかな  
-board boardのサイズ  
--height 高さ。boardは幅固定で、高さだけ、必要なのかも 288
-mobile mobileの画像サイズ  
--width 71
--height 98
counts
-like likeの数 1
-repins repinsの数 2
-comments コメントの数 3
description pinの説明文 photo inside photo
is_video videoかどうか youtubeのPin等のときはtrueになる false
video_data videoのソース。is_video=trueのときのみ
-source ソースタイプ youtube
-id ソースのID 4_p8B20XtZw
created_at Pinしたタイムスタンプ 2010-12-14T19:41:26
domain オリジナルのドメイン ohjoy.blogs.com
user ユーザー情報 image_large_url/is_following/image_url/id/full_name/username
id pinのid http://pinterest.com/pin/107523509822961839/のようにして呼び出せる 107523509822961839
is_repin repinかどうかとおもわれるが、falseの例しかみあたらない。ログインしたらかわるのかな? false

画像に関して、モバイルとクローズアップのサイズが異なる場合もあった

{ 
         "source" : "http://ohjoy.blogs.com/my_weblog/2010/12/love-this.html",
         "images" : {
            "thumbnail" : "http://media-cdn.pinterest.com/upload/107523509822961839_Hug9Gjcs_t.jpg",
            "closeup" : "http://media-cdn.pinterest.com/upload/107523509822961839_Hug9Gjcs_c.jpg",
            "board" : "http://media-cdn.pinterest.com/upload/107523509822961839_Hug9Gjcs_b.jpg",
            "mobile" : "http://media-cdn.pinterest.com/upload/107523509822961839_Hug9Gjcs_f.jpg"
         },
         "board" : {
            "is_following" : null,
            "name" : "All Sorts of Inspiration ",
            "url" : "/athartwell/all-sorts-of-inspiration/",
            "id" : "107523578542424347",
            "user_id" : "107523647261900803",
            "category" : "",
            "description" : null
         },
         "comments" : [],
         "sizes" : {
            "board" : {
               "height" : 262
            },
            "mobile" : {
               "width" : 71,
               "height" : 98
            }
         },
         "counts" : {
            "likes" : 5,
            "repins" : 25,
            "comments" : 0
         },
         "description" : "photo inside photo",
         "is_video" : false,
         "domain" : "ohjoy.blogs.com",
         "created_at" : "2010-12-14T19:41:26",
         "user" : {
            "image_large_url" : "http://media-cdn.pinterest.com/avatars/athartwell-89_o.jpg",
            "is_following" : null,
            "image_url" : "http://d30opm7hsgivgh.cloudfront.net/avatars/athartwell-89.jpg",
            "id" : "107523647261900803",
            "full_name" : "Ali Hartwell",
            "username" : "athartwell"
         },
         "id" : "107523509822961839",
         "is_repin" : false
      },

ビデオのPinのサンプル

      { 
         "source" : "http://www.youtube.com/watch?v=4_p8B20XtZw&feature=related",
         "images" : {
            "thumbnail" : "http://media-cdn.pinterest.com/upload/187603140697157134_HlHY54Fn_t.jpg",
            "closeup" : "http://media-cdn.pinterest.com/upload/187603140697157134_HlHY54Fn_c.jpg",
            "board" : "http://media-cdn.pinterest.com/upload/187603140697157134_HlHY54Fn_b.jpg",
            "mobile" : "http://media-cdn.pinterest.com/upload/187603140697157134_HlHY54Fn_f.jpg"
         },
         "board" : {
            "is_following" : null,
            "name" : "Nigel with the Brie.",
            "url" : "/willysagnol/nigel-with-the-brie/",
            "id" : "187603209416605932",
            "user_id" : "187603278136082564",
            "category" : "video",
            "description" : ""
         },
         "comments" : [],
         "sizes" : {
            "board" : {
               "height" : 144
            },
            "mobile" : {
               "width" : 480,
               "height" : 360
            }
         },
         "counts" : {
            "likes" : 0,
            "repins" : 0,
            "comments" : 0
         },
         "description" : " ",
         "is_video" : true,
         "created_at" : "2011-08-21T13:17:17",
         "domain" : "youtube.com",
         "video_data" : {
            "source" : "youtube",
            "id" : "4_p8B20XtZw"
         },
         "user" : {
            "image_large_url" : "http://media-cdn.pinterest.com/avatars/willysagnol-14_o.jpg",
            "is_following" : null,
            "image_url" : "http://d30opm7hsgivgh.cloudfront.net/avatars/willysagnol-14.jpg",
            "id" : "187603278136082564",
            "full_name" : "Liam Keyes",
            "username" : "willysagnol"
         },
         "id" : "187603140697157134",
         "is_repin" : false
      },


PintarestPinterest

本物が公開されています(2013/6/25追記)

developers.pinterest.com