【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; } }
欠点は、昔の(時間が経った)ツイートに対する返信は取得できない可能性が高い。
<関連記事>