【PHP】 PEAR::Services_TwitterでTwitter API 1.1の検索APIに対応

前回の続き。 PEAR::Services_Twitterを使ってAPI1.1にリクエストを送る方法はこちらを読んでください。 【PHP】 PEAR::Services_TwitterでTwitter API 1.1対応 | mutter 「タイムラインから「google」という単語で検索してマッチしたツイートを取得したい」というような要求があった場合に、API1であればこんなリクエストを送れば取得出来ました。 GET search | Twitter Developers

http://search.twitter.com/search.json?q=google
API1.1では、要Authentication付きでこんなリクエストになります。 GET search/tweets | Twitter Developers
https://api.twitter.com/1.1/search/tweets.json?q=google
このリクエストをServices_Twitterで組み立てるとこんな感じになるのですが、
$obj = new Services_Twitter();
/* oAuth省略 */
$data = $obj->search->tweets(array('q' => 'google'));
実際に動かすと、
Unsupported endpoint search/tweets
と言われて動きません。問題は2つあります。
  1. Services_Twitterが「search/tweets」をサポートしていない
  2. searchの場合のリクエストURLが「http://search.twitter.com」になっている
この2つを解決してやれば、無事に動くようになります。

続きを読む

Tumblr BinderにTwitterアカウントでログイン出来ない不具合を修正しました

TumblrのRSSをまとめる「Tumblr Binder」というサービスを作っています。 umbls | Tumblrを便利に使うサービス そこではTwitterの認証機能を使ってログイン機能を作っているのですけれども、どの認証が上手く出来なくなっていました。まめに設定を変更するようなサービスでもない(使ってる人も大体1回設定したら終わりだと思います)ので、全く気付いていませんでした…申し訳ありません。 現在は再びTwitterアカウントでログイン出来るようになっています。 今も使われている方がどれくらいいらっしゃるかわかりませんが、ご迷惑おかけいたしました。

続きを読む

【PHP】 PEAR::Services_TwitterでTwitter API 1.1対応

息抜きにちょっとした自分向けアプリケーションを作りました。仕様はこんな感じ。

  • 「1日1ニコ」ブログのアカウント @__1nico__ に投稿しているブログの更新情報を拾って
  • メインアカウント @nobodyplace でリツイートする
ただそれだけ。 いちいち確認してリツイートするの面倒くさいってことなんだけども、Twitter API 1.1向けの課題としては軽くて面白いかなってことでさくっとこしらえました。使用言語は例によってPHPです。 大体の流れはこんな感じ。
  1. PEAR::Services_Twitterを読み込み
  2. OAuthアクセス
  3. GET statuses/user_timeline」を使ってユーザー「@__1nico__」のツイートを取得する
  4. リツイートしてなければ「POST statuses/retweet/:id」でユーザー「@nobodyplace」としてリツイート
最初の構想では、3と4の間に、
  • GET statuses/retweets/:id」を使ってリツイート一覧を取得して自分がリツイート済みかどうかチェックする
という工程も入っていたのですけど、実際に使ってみると、「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」で判断できますもんね。そうかー

続きを読む

APIを叩いてTwitterのアイコンを取得する(tweetimag.esがダメそうなので)

複数の人の言及ツイートを拾って表示するような場合、これまではtweetimag.esというサービスを使ってアイコンを表示してきました。これはTwitterアイコンの取得を代行してくれるAPIのようなサービスで、こんな感じで指定してやればアイコンが表示されます。

http://img.tweetimag.es/i/nobodyplace_n
とっても便利だったんですが、負荷が上がって対応できなくなったのかいよいよ落ちることが多くなり不安定でダメそうなので、自分で何とかしなくてはいけなくなりました。素直にユーザー名だけでこんな風に取れると推測でいろいろ出来て楽で良いんですけど、
理想)http://img.twitter.com/nobodyplace/square_middle.jpg
あいにくそんなことにはなってないので…
現実)https://twimg0-a.akamaihd.net/profile_images/1210586817/may_sq_400_normal.jpg
なんとかプログラムで対応してやる必要があります。

続きを読む

【メモ】 ニコニコ静画のAPI(ニコニコ静画用RSSの続き)

ニコニコ静画用RSSの続き。 ニコニコ静画のRSSとRSS生成用のブックマークレットを作りました | mutter ニコニコ静画のAPIについてはこの辺に情報があります。 ニコニコ静画のAPIを少し調べてみた – まめ畑 ニコニコ解析メモ – ニコ★リブ Wiki – SourceForge.JP ニコ動マイリスト系APIまとめ – あたご型護衛艦日記 個人的にはデータ操作用のAPIにはほとんど興味が無くてもっぱら情報取得用のAPIが欲しいのですが、静画サイトをごにょごにょしてたら見つけたので2個追加。

続きを読む

【メモ】 Twitで「片想いユーザー」の色分けが出来なくなったとき

  1. 「設定」»「更新」»「片想いユーザーを色分け表示する」をオフ
  2. Twit再起動
  3. 「設定」»「更新」»「片想いユーザーを色分け表示する」をオン
  4. Twit再起動 → 直る(直らなかったら諦める)
シンプルな作りなのでいきなり壊れたりしないし、もし動かなくなっても設定ファイル作り直せば大体直る(Twitterのせいでなければ)ようなので、あんまり心配せずに済んで重宝しています。リスト未対応も、「プログラムでリストメンバー書き出し→リストファイル書き換え」+「Sugar Sync」でなんとかなってますし。

そういえばTwitterの短縮URL「t.co」とAPIの話

Twitterの短縮URL「t.co」がリリースされたときに、「なんかそういうAPIありましたっけ?」とCheebowさんに聞かれて即答できませんでした。んでその後知ったんですけど、確かに「t.co」展開用のAPIは公開されていませんが、API経由でコメントを取得する際にパラメータを付加することで元URLを取得できるとかそんな仕様になってるようです。 「include_entities=true」をリクエストに付けて得られる「entities」の中にある「expanded_url」がそれ。 https://api.twitter.com/1/statuses/show/119288812068278272.xml  ↓ https://api.twitter.com/1/statuses/show/119288812068278272.xml?include_entities=true メモついでに。

続きを読む

Google AnalyticsのAPIをPHPから叩く

Blogのアクセスレポートで利用してただけど、先日Fenrirのデベロッパーズブログで見かけたのでちょっと書いてみる。

関連

Google Analytics API を利用した人気エントリー PHP スクリプト (フェンリル | デベロッパーズブログ) 【Web】Google Analytics API の簡単に出来るお試し方法 (フェンリル | デベロッパーズブログ) 上記エントリ内では、「GAPI」というクラスを利用していますが、 個人的には「Google Analytics API Class」の方が好きです。 (野良ライブラリなのは同じですが) Google Analytics API class for PHP | Ask About PHP 以下、それを使ったサンプルコード。

続きを読む

MLBのデータはXMLまたはJSONで取得できるらしい

イチローの打率が気になるので、どこかからデータを引っ張ってきてグラフ化したいなぁ、できれば毎日更新でとか思ってたんだけど、ニュースサイトをパースするのも何か面倒だしましてや手入力とか。どこかでCSV配布してるサイトとかないのかなぁとか思ったらば、なんとMLBが全選手の全データをXMLで提供していることが解って驚愕。マジか。 正確に言うと、「Gameday」っていう今日の注目試合みたいな企画のためのデータベースなのだけど。 MLB.com Gameday | MLB.com: Gameday これがオープンになってて自由に使えるみたい。 データベースはRESTチックにアクセスできそうな階層になっててルートはここ。 http://gd2.mlb.com/components/game/mlb/ 探せば色んなデータが手にはいる。すげえ。

続きを読む

【メモ】 PEAR::Services_Amazonを使って商品情報を取得(署名認証対応)

いつまでもAmazonのアフリエイト作成ツールに頼ってリンクを作成するのも何だかなぁと思ったので、APIを叩いて結果を取得してみた。色々とやり方はあるだろうけれども、PHPでやる場合にはPEARライブラリの「Services_Amazon」を利用すると簡単。

0. 準備

APIを利用するには、「アクセスキーID」と「アクセスシークレットキー」の2つが必要です。 この辺を参考にアカウントを作成して取得。 Access Key IDの取得 – サービス利用の準備 – Amazon Web サービス デザインが変わってるけど大体解ると思います。 ちなみにこれはAmazonオンラインショップのユーザーアカウントや、アフリエイトのアカウントとは違うので、それらとは別に取得しなくてはなりません。また既にAmazonでアフリエイトをやってる人は、メールアドレスを揃えないといけないらしいです。

続きを読む

【小ネタ】 ニコニコ動画のユーザーアイコンのURL

特に実用性がないような気がしますが一応。

ユーザーアイコンのURL形式

例えばユーザーIDが123456の場合、ユーザーアイコンはこんなURLになります。
  • http://usericon.nimg.jp/usericon/12/123456.jpg

「12」の部分

ユーザーIDの下4桁を削除した数字です。 4桁以下の場合には「0」が入ります。
  • 9987 → 0
  • 123456 → 12
  • 45678910 → 4567

「123456」の部分

ユーザーIDです。

ユーザーアイコンが存在しない場合

ユーザーアイコンのURLにアクセスすると404が返ります。 その上で表示はプロフィール画面ではブランク用の画像に(以下は例)。
  • http://uni.res.nimg.jp/img/user/thumb/blank.jpg

注意

動画情報に合わせて表示したりという用途が考えられますが、 静的ファイルの分散方法については状況次第で変更もありうるので、参考程度に。 ユーザー情報を取得できるAPIがあれば気にしなくていいんですけどねー 今のところないみたいなので。 (ユーザーID自体はニコニコ動画の動画情報API内に含まれます) ブログパーツならあるけど。

続きを読む