息抜きにちょっとした自分向けアプリケーションを作りました。仕様はこんな感じ。
- 「1日1ニコ」ブログのアカウント @__1nico__ に投稿しているブログの更新情報を拾って
- メインアカウント @nobodyplace でリツイートする
ただそれだけ。
いちいち確認してリツイートするの面倒くさいってことなんだけども、Twitter API 1.1向けの課題としては軽くて面白いかなってことでさくっとこしらえました。使用言語は例によってPHPです。
大体の流れはこんな感じ。
- PEAR::Services_Twitterを読み込み
- OAuthアクセス
- 「GET statuses/user_timeline」を使ってユーザー「@__1nico__」のツイートを取得する
- リツイートしてなければ「POST statuses/retweet/:id」でユーザー「@nobodyplace」としてリツイート
最初の構想では、3と4の間に、
という工程も入っていたのですけど、実際に使ってみると、「GET statuses/user_timeline」「POST statuses/retweet/:id」のリクエスト制限が15分当たり180であるのに対して、「GET statuses/retweets/:id」の制限が15分当たり15でボトルネックになってしまうことが解ったので、除外しました。
Twitterへのリツイートのリクエストは、重複している場合は無視される(ただしエラーは返ってきて今回なら、Services_Twitter_Exceptionが投げられる)そうなので、まあそれでいいかなという。
追記
こんなことをしなくても自分がリツイートしているかどうかは、「retweeted」という要素を確認することでチェックできるのですね。「retweeted」は、そのツイートがリツイートされているかどうかを示していると勘違いしていたのですが、実際にはそのリクエストを送ったユーザー(この場合なら@nobodyplace)がリツイートしているかどうかをあらわしていました。trueならリツイート済み、falseなら未リツイートと。そもそもツイートがリツイートされたかどうかは、「retweet_count」で判断できますもんね。そうかー
続きを読む