【PHP】Twitter APIで特定のツイートに対する返信を取得する
wordpressでTwitter APIと連携するプラグインを開発したときのメモ。
PHPでTwitter APIを使う方法は前の記事を参考に。
ちなみにServices_Twitterを使っている。
特定のtweetに返信した場合にtimelineを取得すると、in_reply_to_status_idに返信元のstatus_id(tweet ID)が入っているので、これをキーにして取得する。
「このつぶやきに対するツイートのタイムラインを取得」というAPIは現状ないみたいなので、自分に対するつぶやきを取得できるstatuses/mentionsを使って取得。
指定したstatus_id以降の自分に対する返信を取得して、ループしながらin_reply_to_status_idと比較するやり方。
サンプルコード(一部のみ抜粋)
public function get_replay($status_id='', $limit=20)
{
try {
$param = array();
if (!empty($status_id)) {
$param['since_id'] = $status_id;
}
if (!empty($limit) && is_numeric($limit) && $limit > 0) {
$param['count'] = $limit;
}
$list = $this->client->statuses->mentions($param);
$result = array();
foreach ($list as $item) {
if (!empty($item->in_reply_to_status_id) && $item->in_reply_to_status_id == $status_id) {
$result[] = $item;
}
}
return $result;
} catch (Services_Twitter_Exception $e) {
array_push($this->error, $e->getMessage());
return false;
}
}欠点は、昔の(時間が経った)ツイートに対する返信は取得できない可能性が高い。
<関連記事>