ツイッターの片想いを調べるツールです。。。って、「絡まったぁ」の整備前、と、フォロされているけど、フォローしなくちゃ駄目だったのかなぁ、を調べられます。
# フォロー返しが、得意じゃないもので、ちょっと相手をログを見てからフォローしてます。
# 逆に、フォローするけど連絡はしません。「ぼけ突っ込み」をしているのは私 @moonmile です。
さて、apiの回数制限の関係から本来ならば、jQuery を使うと良いのですが、実験用ツールなので、そのまま公開しちゃいます。
こんな感じに、
- 両想い 相互フォローの場合は、ピンク
- 片想い 自分だけがフォローしている場合は、レモン色
- フォローされているだけだと、ブルー
になります。
http://moonmile.net/php/krm005.php
http://moonmile.net/php/krm005.php?id=アカウント
のようにアカウントが指定できます。
結構重たいので、1,000人しかチェックしていません。
api 的には、statuses/friends を使っているのですが、本来は friends/ids, followers/ids を使って、詳細情報を拾ってくるのが筋です。ただ、ids のほうは、一度に300名ぐらい拾ってこれるのですが、ID のみなので、その後の詳細を拾うために api 制限にすぐ引っ掛かります。それゆえ、statuses/friends のほうがいいんですなぁ。まあ、ID のほうは、別途使い道があるので、またの機会に。
私の場合
フォロー 105 フォロア 109 相互 68 トータル 146
な数値になります。これが、どのくらいが適正(?)なのかは不明ですが、幾人か統計を取ってみれば平均値みたいなのが出るでしょう。そうすると、バランスが悪い人は「営業目的かな?」ってな訳で、避けることができます。
そんな訳で、ソースも公開しておいます。ローカルでPHPが動く環境にすると、色々調べられますよ。
<?php
if ( $_GET['id'] != "" ) {
$username = $_GET['id'];
} else {
$username = 'moonmile';
}
$cursor = "-1";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>フォロー/フォロア of <?= $username ?></title>
</head>
<body> <?php $cnt_fre = 0;
$cnt_fol = 0;
$cnt_ff = 0;
$cnt = 0;
$users = array(); // friendsを取得
for ( $i=0; $i<10; $i++ ) { $url = "http://api.twitter.com/1/statuses/friends/".$username.".xml";
$url = $url ."?cursor=".$cursor; $rss = simplexml_load_file($url); foreach ( $rss->users->user as $user ) { $v = new stdClass;
$id = $user->id;
$v->id = $user->id;
$v->name = $user->name;
$v->sname = $user->screen_name;
$v->icon = $user->profile_image_url;
$v->lang = $user->lang;
$v->friends = true;
$users[(string)$id] = $v ;
$cnt++;
$cnt_fre++; // echo "<tr><td>".$cnt."<td>".$id."<td>".$name."<td>".$sname."<td>".$icon."<td>".$lang."</tr>\n";
} $next = $rss->next_cursor;
$prev = $rss->previous_cursor;
/*
if ( $prev != "0" ) {
echo "<a href='krm005.php?id=".$username."&cur=".$prev."'>prev</a> \n";
}
if ( $next != "0" ) {
echo "<a href='krm005.php?id=".$username."&cur=".$next."'>next</a> \n";
}
*/
if ( $next == "0" ) break;
$cursor = $next; }
// followersを取得
$cursor = "-1";
for ( $i=0; $i<10; $i++ ) { $url = "http://api.twitter.com/1/statuses/followers/".$username.".xml";
$url = $url ."?cursor=".$cursor;
$rss = simplexml_load_file($url); foreach ( $rss->users->user as $user ) { $id = $user->id;
$v = $users[(string)$id];
if ( $v ) {
$v->followers = true;
$cnt_ff++;
} else {
$v = new stdClass;
$v->id = $user->id;
$v->name = $user->name;
$v->sname = $user->screen_name;
$v->icon = $user->profile_image_url;
$v->lang = $user->lang;
$v->followers = true;
$users[(string)$id] = $v ;
$cnt++;
}
$cnt_fol++;
} $next = $rss->next_cursor;
$prev = $rss->previous_cursor;
if ( $next == "0" ) break;
$cursor = $next; } ?> <?= $username ?><hr>
フォロー <?= $cnt_fre ?>
フォロア <?= $cnt_fol ?>
相互 <?= $cnt_ff ?>
トータル <?= $cnt ?>
<hr> <table>
<tr>
<td>No.
<td>ID
<td>フォロー
<td>フォロア
<td>名前
<td>アカウント
<td>アイコン
</tr> <?php
foreach ( $users as $v ) {
if ( $v->friends == true && $v->followers == true ) {
$bgcol = "pink";
} else if ( $v->friends == true ) {
$bgcol = "lightyellow";
} else {
$bgcol = "aliceblue";
}
echo "<tr style='background-color: ".$bgcol."'>";
echo "<td>".$cnt;
echo "<td>".$v->id;
if ( $v->friends == true ) {
echo "<td>○";
} else {
echo "<td>-";
}
if ( $v->followers == true ) {
echo "<td>○";
} else {
echo "<td>-";
}
echo "<td><a href='http://twitter.com/".$v->sname."'>".$v->name."</a>";
echo "<td><a href='krm005.php?id=".$v->sname."'>".$v->sname."</a>";
echo "<td><img src='".$v->icon."' width='48' height='48' />";
echo "</tr>";
$cnt--;
} ?>
</table>
</body>
</html>
