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を書いたにしてはいいほうかなぁと思う.

パフォーマンスは測定していないけれど,フォロワーが百万人もいる人が使ったら,かなり時間がかかりそう...
<?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";
}
?>

コメント

このブログの人気の投稿

Gbps でなく GT/s

HCSLに33オームの直列抵抗が必要な理由

PowerShellによるExcel/PowerPointの操作