JSONPでTwitter API searchメソッド

今回もWebService/Twitter/API – わすWikiを参考にさせていただきました。

先日の記事「Twitter API 愛の劇場のソース」では、Twitterのuser_timelineメソッドをPHPで呼び出し、simplexmlを使って処理しました。

しかし、記事中に書いてあるようにソースに不備があります。

書き直すに当たり、次の変更を行ないました。

  1. searchメソッドを使って検索する
  2. PHPを使わず、JavaScriptとJSONPだけで構成する。

前回のソースは、とりあえずTwitter APIがどんなものか動かしてみるレベルの内容です。
いいコードとはとてもいえないものでした。今回は使う開発言語を減らすことで、コードがスッキリしました。

アクセス制限の問題もあります。1時間に150アクセスまでなので、PHPを置いたサーバーからTwitterのサーバーにアクセスするより、JavaScriptを読み込んだ各ブラウザからTwitteのサーバーにアクセスさせる方がIPを分散できます。

さらに、前回はリレー小説の書き手分user_timelineメソッドを呼び出していました。今回はsearchメソッドで、Twitterのサーバーに問い合わせる回数を減らします。

search API

http://search.twitter.com/search.json

赤字のjsonatomにすると、Atomが返ってきます。

http://search.twitter.com/search.json?q=検索クエリー&callback=コールバック関数名&result_type=recent&rpp=100&since_id=200851367760363520&page=1

参考記事:GET送信とは?

必須パラメーターはqです。
q=には検索クエリーをURLエンコードして送信します。検索クエリーの書き方は後述します。

callback=にはJSONPのコールバック関数を指定します。このオプションはatomの時には適用されません。

result_type=には、欲しい検索結果の種類を指定します。指定できるのは以下の3つ。指定しないとrecentが指定されたものとみなされます。

result_typeに指定できる値
recent   「新しい発言」を優先的に検索結果に含める
popular 「人気の高い発言」を優先的に検索結果に含める
mixed    「新しい発言」と「人気の高い発言」の両方を適度に検索結果に含める

rpp=には、一度に取得する検索結果の数を指定します。指定できる最大値は100、未指定だと15になります。

since_id=は指定したIDより大きなIDのステータスのみ取得するオプションです。検索に指定IDそのものは含まれません。

page=1ページを rpp 件とみなして取得するページを指定します。最初のページは1です。また、rppとpageで遡れるのは、最大1500件までです。

他にもたくさんのオプションがあり、WebService/Twitter/API – わすWikiにまとめられています。


ところが、今回も問題がありました。ある日から1話目が表示されなくなったのです。
どうも、約10日(1.5週)以上前のつぶやきは検索されないようです。

また、利用できる検索インデックスについても日数の制限をかけています。現在は、1.5週となっていますが1日のささやきが増加するとこの数字はもっと短くなります。
Twitter ビジネスユーザー向けブログ » Twitter APIで開発をするために知っておくべきことより

ということで、またスクリプトを修正することになるのですが、それは別の記事にして、この話を続けます。

検索クエリーの書き方

今回の検索クエリはこうなりました。

from:Tom3suteki OR from:welcome2ourshop -RT つづく

from:Tom3suteki で、投稿者がTom3sutekiのつぶやきを検索します。

リレー小説なので、投稿者が2人います。from:Tom3suteki または from:welcome2ourshop という場合は、ORで結びます。

from:Tom3suteki OR from:welcome2ourshop

ORは大文字で、前後に半角スペースを入れます。

検索から除外したい文字列の前には  (ハイフン)をつけます。ハイフンと文字列の間にはスペースを入れずにくっつけます。

RT とすることでRTを含む文字を除外します。つまり、リツィートの除外を指定したことになります。

つづくなどと、何もつけない文字列を指定すると、その文字列を含んだツィートを探します。

つまり「from:Tom3suteki OR from:welcome2ourshop -RT つづく」は、「投稿者がTom3sutekiかwelcome2ourshopでRTを含まず(リツィートを含まず)、つづく という文字列があるツィートを探せ」という意味です。

これを、URLエンコードした上で、q=に続けて書きます。

“JSONPでTwitter API searchメソッド” の続きを読む

GET送信とは?

URLに情報を添付するGET送信について。
これでTwitterなどのAPIに情報を送って使うことが出来ます。

インターネットでページを見るときに必要なのがURLです。

このブログのURLはhttp://fanblogs.jp/ayzfqir5/archive/465/0ですが、それに情報を含めて送る事が出来ます。

たとえば、http://fanblogs.jp/ayzfqir5/archive/465/0にユーザーIDの「Tom」とパスワード「sexy」を含めて送る場合このようにします。(このユーザーIDとパスワードは架空のものです)

http://fanblogs.jp/ayzfqir5/archive/465/0?user_id=Tom&password=sexy

上のリンクをクリックしてみてください。URLに架空のユーザーIDとパスワードという、余計なものが混ざっているのに、問題なくこのページが表示されたと思います。

これがGET送信です。GET送信でTwitterなどのAPIにパラメーターを送ることが出来ます。

GET送信
http://fanblogs.jp/ayzfqir5/archive/465/0?user_id=Tom&password=sexy

“GET送信とは?” の続きを読む

自殺小説トーナメント参加概要

トーナメント・テーマ ブログに自殺小説を載せてる方なら誰でもOKです!

先ほど申し込んだ「自作小説!ブログトーナメント」ですが、参加概要をよく読んだら
受け付けているのは「自殺小説」だった!

エントリーしたのは恋愛小説なんだけど、大丈夫だろうか?

トーナメント・テーマ ブログに自殺小説を載せてる方なら誰でもOKです!
トーナメント登録中の小説 Twitter愛のリレー小説「セルヴーズの雨傘」

自作小説トーナメントに出場します!

自作小説!ブログトーナメント」に参加します。
参加受付は12年05月12日から12年05月19日まで。

私はTwitter愛のリレー小説「セルヴーズの雨傘」でエントリーを済ませました。
第一回戦は12年05月20日00:00からです。お楽しみに!

自作小説!ブログトーナメント