【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;
	}
}

欠点は、昔の(時間が経った)ツイートに対する返信は取得できない可能性が高い。

 

<関連記事>

[PHP]PEARのServices_Twitterでつぶやいたり取得したり
Twitter APIのxAuthをメールで申請・・・でも必要なかった