Twitter API Timeline解説
皆さんこんにちわ
お元気ですか?僕はTwitterに苦しめられています。
本日はTwitter APIについて。このAPI何かとめんどくさい。
通信制限はあるし、Developer Display Requirementsとかもあるし…
今回はTimelineの解説を行います。色々と使いこなすのが難しい。
まずはOption
ステータス
Parameter | 動作 | default |
count | 数は200の最新のコメントを取り出す。 | 20 |
since_id | tweetidより上のタイムラインを取得 | なし |
max_id | tweetid以下のタイムラインを取得 | なし |
trim_user | tとするとユーザーidのみ出力 | true |
exclude_replies | リプライを含むかどうか | true |
contribute_details | ステータス情報にuser_id以外も含まれるようにする | true |
include_entities | entitesを含める場合はtrue | false |
page | ページ数 | 0 |
ここまでなら簡単だったのです。
リクエスト送ればいいだけです。だが問題があります。
https://dev.twitter.com/docs/working-with-timelines
図面は上記のアドレスをそのままお借りしました。
pageの問題
pageステータスの仕様
まずは、以下の図面を見てください。
新しいツイートの0tweet目から4tweet目(id:10-6)、そのまま2ページ目5tweet目から9tweet目(id:5-1)までを取得できます。
さて、この調子でpageだけずらして取得すると大問題が発生します。
ページがずれる
以下の図を見てください。
Processedは処理済みということです。Newは新しいtweetですね。
図のようにcount5、2ページ目を取得しようとする場合、新しいTweetを含んでの5tweet目になります。そうなると処理した部分を含んだTweetを含んでしまいます。
これは不本意です。
max_idを使う。
max_idを使うことでそれを回避することができます。以下の図を見てください。
page0の最後のmax_idを保存し、page1の時にmax_idにpage0のmax_parameterを入れると、このように取得できます。処理済みのtweetが必ず一つ入りますね。これは面倒。
そこで以下のように行います。
処理した最後のmax_idから-1を行います。するとそのid以下の内容が出てくるので上の図面のようにうまくいきます。
Since_id
今度はidとidの間を取得してみましょう。
max_idだけだとうまくいきませんね…そりゃそうか。
since_idと呼ばれるパラメータを組み合わせることでうまくいきます。
since_idを組み合わせることでsince_idより上、max_id以下を実現し、うまくidを取得することができます。