ツイッターの片想いを調べるツールです。。。って、「絡まったぁ」の整備前、と、フォロされているけど、フォローしなくちゃ駄目だったのかなぁ、を調べられます。
# フォロー返しが、得意じゃないもので、ちょっと相手をログを見てからフォローしてます。
# 逆に、フォローするけど連絡はしません。「ぼけ突っ込み」をしているのは私 @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が動く環境にすると、色々調べられますよ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 | <?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> |