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";
}
?>
コメント