ツイッターの片想いを調べるツールです。。。って、「絡まったぁ」の整備前、と、フォロされているけど、フォローしなくちゃ駄目だったのかなぁ、を調べられます。
# フォロー返しが、得意じゃないもので、ちょっと相手をログを見てからフォローしてます。
# 逆に、フォローするけど連絡はしません。「ぼけ突っ込み」をしているのは私 @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>