twitterAPI1.1の返信対応について

どうも、前の記事の続きです。
今回は返信部分とその他プロフィール画像の変更APIについて書きます。

10月11日ごろに現行1のAPI文法なども変わったようです。
xmlを使用している場合、urlにapiのバージョンを明記していないと取れないとか。
この機会に1.1対応してしまいましょう。

まず、返信部分の対応です。

以前のプログラムでは

$host = "http://twitter.com/statuses/mentions.xml";    //返信一覧
//を、下記に変更
$host = "https://api.twitter.com/1.1/statuses/mentions_timeline.json";    //返信一覧

これでxmljsonにします。json形式なのでパースの文法も変えます。

//XML文字列をオブジェクトに代入する 
$XML = simplexml_load_string($req);

//を、下記に変更
//json文字列をオブジェクトに代入する 
$JSON = json_decode($req);

スクリプトの$XMLの部分を置換で$JSONに全て変更して下さい。
json_decodeの関数が使えるのはphp5以降です。出来ない場合はご確認を。
そして次に、ややこしいところですが

$XML->status[$i]->text;
//が、
$JSON[$i]->text;

になります。statusの項目が無くなったというわけです。すべて書き直して下さい。
これも置換で->statusを削除すればいいですね。

最後に、変更があった部分です。
今まで発言postに付与されたidを取得し、そこから既に処理済みの項目を取捨選択していたのですが、変更があり、idという項目とid_strという項目にわかれたようです。
メンションの発言を取るオプションの引数、since_idはid_strを使います。

//最終発言リプライのidを保存してる部分。先頭を調べて…
$string = $XML->status[0]->id;
//下記に変更
//最終発言リプライのidを保存してる部分。先頭を調べて…
$string = $JSON[0]->id_str;

これで正しいidが取得されるはずです。
以上で返信部分が今まで通り再現されると思われます。
id部分は特に、暴走と繋がりやすいのでバックアップ等を取りつつ慎重に作業して下さい。

ちなみに画像変更の関数はurlを帰るだけでOKです。

https://api.twitter.com/1.1/account/update_profile_image.json

いかがでしたでしょうか。みなさん楽しいbotライフを。