Twitter API と PHP でフォロワーリスト作成してみたぞ
今晩はTwitterAPIをたたいて遊んでみた.言語はJavaかC#にしようかと思っていたけど,勉強を兼ねて,PHPを選んだ.まあ,XMLのパーザがあれば何でもいいんだけど.
課題は,とりあえず,フォローしている人とフォロワーのリストを作成すること.と言ってもほとんどやることはない.http://twitter.com/statuses/friends/haoka.xmlのURLをGETすれば,僕がフォローしている人のリストがXMLで送られてくる.あとはそれを好きなように加工すればいい.フォロワーの場合なら,URLの"friends"を"followers"に置き換えればよい.
今回は,"id"と"screen_name"だけをリストにして表示するPHPコードを書いてみた.正直,汚いコードだけど,今日始めてPHPを書いたにしてはいいほうかなぁと思う.
パフォーマンスは測定していないけれど,フォロワーが百万人もいる人が使ったら,かなり時間がかかりそう...
課題は,とりあえず,フォローしている人とフォロワーのリストを作成すること.と言ってもほとんどやることはない.http://twitter.com/statuses/friends/haoka.xmlのURLをGETすれば,僕がフォローしている人のリストがXMLで送られてくる.あとはそれを好きなように加工すればいい.フォロワーの場合なら,URLの"friends"を"followers"に置き換えればよい.
今回は,"id"と"screen_name"だけをリストにして表示するPHPコードを書いてみた.正直,汚いコードだけど,今日始めてPHPを書いたにしてはいいほうかなぁと思う.
パフォーマンスは測定していないけれど,フォロワーが百万人もいる人が使ったら,かなり時間がかかりそう...
<?php // select the first child node with node name equal to $tagName function selectChildNode($tagName, $node) { for ($i = 0; $i < $node->childNodes->length; $i++) { $childNode = $node->childNodes->item($i); if ($childNode->nodeName == $tagName) { return $childNode; } } return 0; } // generate user list function getUserList($url) { $users = array(); $xml = new DOMDocument(); $nextCursor = -1; do { $xml->load($url."?cursor=".$nextCursor); $userNodes = $xml->getElementsByTagName("user"); $nextCursor = $xml->getElementsByTagName("next_cursor")->item(0)->nodeValue; for ($i = 0; $i < $userNodes->length; $i++) { $userNode = $userNodes->item($i); $idNode = selectChildNode("id", $userNode); $screenNameNode = selectChildNode("screen_name", $userNode); $users[] = array("id" => $idNode->nodeValue, "screenName" => $screenNameNode->nodeValue); } } while ($nextCursor != 0); return $users; } //-------------------------------------------------------------------------- // Main //-------------------------------------------------------------------------- $friends = getUserList("http://twitter.com/statuses/friends/haoka.xml"); $followers = getUserList("http://twitter.com/statuses/followers/haoka.xml"); echo "[Friends]\n"; foreach ($friends as $user) { echo $user["id"] . "," . $user["screenName"] . "\n"; } echo "[Followers]\n"; foreach ($followers as $user) { echo $user["id"] . "," . $user["screenName"] . "\n"; } ?>
コメント