第2.1回Twitter API勉強会 - 検索API

  • 5,995 views
Uploaded on

 

More in: Technology , Education
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,995
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
21
Comments
0
Likes
4

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Yusuke Yamamoto
  • 2. 第2.1回 Twitter API勉強会 #twtr_hack 2011/12/18Yusuke Yamamoto
  • 3. 質問など #twtr_hack #qYusuke Yamamoto
  • 4. Twitter API勉強会• 対象 ‣ Twitter APIに興味がある方であればどなたでも• 目的 ‣ 技術情報のシェア / 技術者の交流• 今回は第2.1回目 Yusuke Yamamoto 4
  • 5. Twitter APIハッカソン• Twitter と連携する何かを開発 ‣ Webサービス ‣ デスクトップアプリケーション/ユーティリティ ‣ モバイルアプリ など Yusuke Yamamoto 5
  • 6. 第2.1回Twitter API勉強会• @yusukey ‣ Twitter の検索API等• @knj77 ‣ Zusaarについて何か• LT ‣ @tkawa / @mike_neck / @ts_3156 / @sue445 / @imaoca Yusuke Yamamoto 6
  • 7. 今日のタイムテーブル19:00∼ APIの基本と最新動向について @yusukey19:40∼ グループに分かれて自己紹介19:50∼ Zusaarについて何か @knj7720:20∼ LT- OAuth Echoについて@tkawa- GroovyとQuartzとTwitter4Jの甘い生活G @mike_neck- 認証なしで使えるAPIまとめ @ts_3156- TDD @sue445- 放射線を自動計測してTwitterにつぶやくimaocandeの紹介 @imaoca Yusuke Yamamoto 7
  • 8. Twitter API ポケットリファレンス• 好評発売中! http://amzn.to/twtr-ref Yusuke Yamamoto 8
  • 9. 第2.1回Twitter API勉強会• 内容 ‣ Twitter APIの検索API ‣ 最近のTwitter APIアップデート ‣ t.coリンクの対応方法 Yusuke Yamamoto 9
  • 10. Twitter の検索APIYusuke Yamamoto
  • 11. Twi$erAPI RESTAPI : API :Java,Objec8ve9C API StreamedTweets , Java,Python,PHP,Ruby,Objec8ve9C Web API WebIntents :Web @Anywhere :HTML,JavaScript Yusuke Yamamoto 11
  • 12. 検索 API• プル型 ‣ 最近のツイートを検索• https://twitter.com/#!/search-homeとほぼ同じ機能 Yusuke Yamamoto 12
  • 13. REST APIと検索 API• 2008年にTwitter検索エンジン-Summize社を買収• 検索APIも技術的にはREST API• レスポンスのスキーマが異なる!!! https://dev.twitter.com/docs/api/1/get/search Yusuke Yamamoto 13
  • 14. 検索 APIの呼び出し• エンドポイント(GET)‣ http://search.twitter.com/search.json?q=****• qパラメータ q : 検索クエリ ・ #twtr_hackを含むツイート q=#twtr_hack ・@yusukeyの#twtr_hackを含むツイート q=#twtr_hack+from:yusukey Yusuke Yamamoto 14
  • 15. 検索 APIのレスポンス{"completed_in": 0.055442, "max_id": 38516581864718336,"max_id_str": "38516581864718336", "next_page": "?page=2&max_id=38516581864718336&q=twitterapi", "page": 1, "query": "twitterapi", "refresh_url": "?since_id=38516581864718336&q=twitterapi", "results": [ {"created_at": "Fri, 18 Feb 2011 08:49:25 +0000", "from_user": "yusukey", "from_user_id": 10248, "from_user_id_str": "10248", "geo": null, "id": 38520449856045056, "id_str": "38520449856045056", "iso_language_code": "ja", "metadata": {"result_type":"recent"}, "profile_image_url": "http://a1.twimg.com/profile_images/1130177378/b_normal.jpg", "source": "<a href="http://sites.google.com/site/yorufukurou/" rel="nofollow">YoruFukurou</a>", "text": "twitterapi今日は安定してるなー", "to_user_id": null,"to_user_id_str": null}, ...]} Yusuke Yamamoto 15
  • 16. 期間を絞る・sinceオペレータ : 指定した日(UTC)以降のツイートq=#twtr_hack+since:2011-12-21・untilオペレータ : 指定した日(UTC)以前のツイートq=#twtr_hack+until:2011-12-21 Yusuke Yamamoto 16
  • 17. ページ処理・rpp: 1レスポンス当たりの最大ツイート数(最大100まで指定可)q=foobar&rpp=100・page: ページ(初期値は1、最大15まで)q=foobar&page=2・max_idパラメータ : 指定したツイートID以前のツイートq=foobar&max_id=149144352336265217 Yusuke Yamamoto 17
  • 18. ページ処理ベストプラクティスQuery query = new Query(term); query.rpp(100);do { QueryResult qr = twitter.search(query); tweets = qr.getTweets(); for (Tweet tweet : tweets) { // ... } if (tweets.size() != 0) { query.setMaxId(tweets.get(tweets.size() - 1).getId() - 1); }} while (tweets.size() != 0); ・rppは100まで、pageは15まで 最大1500件までしか取れない→max_idパラメータで回せばok Twitter4Jを使った例 Yusuke Yamamoto 18
  • 19. 最近のTwitter APIアップデート Yusuke Yamamoto
  • 20. ストリーミングAPIの変更・エンドポイントがSSLのみに(9月末∼)一般https://stream.twitter.com/1/ユーザーストリームhttps://userstream.twitter.com/2/サイトストリームhttps://sitestream.twitter.com/2b/ Yusuke Yamamoto 20
  • 21. 検索APIのスキーマ変更1・ユーザー名の追加(12月からデフォルト)→ to_user_name / from_user_name・in_reply_toの追加(12月からデフォルト)→ 検索結果から会話を追える Yusuke Yamamoto 21
  • 22. 検索APIのスキーマ変更2 ・エンティティの追加(include_entities=true を指定) "entities": { "hashtags": [{"indices": [9, 19], "text": "twitter4j"}], "urls": [{ "display_url": "twitter4j.org/ja/api-supportu2026", "expanded_url": "http://twitter4j.org/ja/api-support.html", "indices": [35, 54], "url": "http://t.co/b6l2xlU"}], "user_mentions": [{ "id": 4933401, "id_str": "4933401", "indices": [0, 8], "name": "山本 裕介", "screen_name": "yusukey"}]}, "text": "@yusukey #twitter4j のAPIのページ更新しました http:// t.co/b6l2xlU" @yusukey #twitter4j のAPIのページ更新しました http://t.co/b6l2xlUuser_mention hashtag url Yusuke Yamamoto 22
  • 23. t.coリンクの対応方法Yusuke Yamamoto
  • 24. t.co• t.co: ティコ• TwitterのURL短縮サービス‣ 悪質なサイトへの誘導をブロック‣ リンクのクリックスルー測定‣ ツイート文字数制限を緩和 The t.co URL Wrapper https://dev.twitter.com/docs/tco-url-wrapper Yusuke Yamamoto 24
  • 25. 本当にあった怖いt.co• URLのつもりじゃないのにリンクになる‣ 仕様です・・• 日本語(マルチバイト)を含むURLが・・・‣ dev.twitter.com またはTwitter development Talkへ報告を• リンク先のURLがわからない(クライアント依存) Yusuke Yamamoto 25
  • 26. t.co FAQ• t.coバグだらけ!‣ かなり直ってます• t.coのクリック数を取得するAPIは?‣ 現在のところ非公開• 同じURLでも違うt.coリンクになる‣ そういう仕様 Yusuke Yamamoto 26
  • 27. t.co FAQ• bit.lyのリンクをツイートした場合は?‣ expanded_url / display_urlはbit.lyになる。2重展開はしない• include_entities=trueを付け忘れた・・‣ HEADリクエストでリダイレクト先を確認可能 Yusuke Yamamoto 27
  • 28. 情報源 • Twitter development talk-ja http://bit.ly/tdt-ja • @twj_dev https://twtter.com/twj_dev • dev.twitter.com - Discussions https://dev.twitter.com/discussionsYusuke Yamamoto
  • 29. 今後の予定12月 検索 API1月 Streaming API2月 Webサイト向け API3月 API 利用規約Yusuke Yamamoto