tomyheroの日記 このページをアンテナに追加 RSSフィード

 | 

2007-11-08

[] Net::Twitter::FriendFinder-0.01_03 15:27  Net::Twitter::FriendFinder-0.01_03 - tomyheroの日記 を含むブックマーク はてなブックマーク -  Net::Twitter::FriendFinder-0.01_03 - tomyheroの日記  Net::Twitter::FriendFinder-0.01_03 - tomyheroの日記 のブックマークコメント

http://coderepos.org/share/browser/lang/perl/Net-Twitter-FriendFinder

 svn co http://svn.coderepos.org/share/lang/perl/Net-Twitter-FriendFinder/trunk/
  • 今まで、すでにfollowしていたユーザもfollow対象になっていたので、それを防ぐことをできるようにしました。
  • 上記の変更のため、username , password を設定する場所を変更しました。
  • follow()でたくさんのユーザを実行しようとした場合、恐らくTwitterのAPIリクエスト制限でこけてしまうので、sleepタイムを指定できるようにしました。

use Net::Twitter::FriendFinder;
 my $tf
    = Net::Twitter::FriendFinder->new({
        setting => {
            filter_already_followers => 1,
            username=> '*******',
            password=> '*******',
            on_echo => 1,
            sleep => 60,
        },
        from => {
            'Google' => { lang=>'ja'},
        }
      });

    $tf->search( 'えろ' );
    $tf->show();
    #$tf->follow();

世間では常識だと思いますが、私が初めて知ったこと

制限

Clients are allowed 70 requests per 60 sixty minute time period, starting from their first request. This is enough to make just over one request per minute, per hour, which should meet the needs of most applications. Rate limiting applies only to authenticated API requests; requests for the public timeline do not count. POST requests (ex: updating status, sending a direct message) also do not count against the rate limit.

APIの使用には(public timeline , update status, direct messeage以外)は、一時間中70回までしかリクエストできない。


この対応として、sleepを入れれるようにしたのと、無駄なリクエストを減らす為に既にfollowしている人は省けるようにしました。

friends APIは100件まで制限がある

friends

Returns up to 100 of the authenticating user's friends who have most recently updated, each with current status inline. It's also possible to request another user's recent friends list via the id parameter b

最近更新があった順番に100件のデータを返す。

これは、結構困ったのですが、page パラメータを指定すると次の100件がとれるようです。オフィシャルでは書かれていないです。これは、Net::Twitterでは対応できないので、無理矢理対応するようにしました。

また、このAPIで取得した情報はキャッシュからのようで、最近にfollowしたユーザが反映されるまでラグがあります。


[] Twitter 検索 16:48  Twitter 検索 - tomyheroの日記 を含むブックマーク はてなブックマーク -  Twitter 検索 - tomyheroの日記  Twitter 検索 - tomyheroの日記 のブックマークコメント

bookmarkより

nyancy1011 twitter検索じゃだめなの?

http://twitter.1x1.jp/search/

そんなサイトがあったのか!Thanks for your info!!


つい、プログラム作ってしまった。

http://coderepos.org/share/browser/lang/perl/Net-Twitter-FriendFinder/trunk/lib/Net/Twitter/FriendFinder/From/TwitterKensaku.pm


[] Net::Twitter::Diff-0.01 21:47  Net::Twitter::Diff-0.01 - tomyheroの日記 を含むブックマーク はてなブックマーク -  Net::Twitter::Diff-0.01 - tomyheroの日記  Net::Twitter::Diff-0.01 - tomyheroの日記 のブックマークコメント

追記:インターフェイスを変更しました。sorry.

http://twitter.g.hatena.ne.jp/tomyhero/20071113

follower , follwoing のdiff情報取得をそれなりに簡単にできます。それだけです。


http://coderepos.org/share/browser/lang/perl/Net-Twitter-Diff

 svn co http://svn.coderepos.org/share/lang/perl/Net-Twitter-Diff/trunk/

調べるだけなら、以下のすばらしいサイトを使用した方が楽。

Twitter Friends Analyzer -> http://tw.muumoo.jp/torchy.html

せっかくなので自分の状態を調べる

  use Net::Twitter::Diff;
    use Data::Dumper;

    my $diff = Net::Twitter::Diff->new();

    $diff->diff( { username => 'tomyhero' , password => '******' } );

    # get screen_names who you are not following but they are.
    print "followingしてない\n";
    print Dumper $diff->not_following();

    # get screen_names who they are not following but you are.
    print "followedされてない\n";
    print Dumper $diff->not_followed();

    # get screen_names who you are following them and also they follow you. 
    print "会話が成り立つかも\n";
    print Dumper $diff->communicated();

結果 (followingしていない方は、なぜか当時やろうとしたけどfollowできなかった気がする。)

followingしてない

$VAR1 = [

'LouiZoot',

'Naney',

'AzureStone',

'noboribotan',

'cubevoice',

'oppappiz'

];

followedされてない

$VAR1 = [

'larsen',

'miyagawa',

'geek',

'srushe',

'MikeG514',

'tokuhirom',

'jshirley',

'dous',

'net_twitter',

'londonpm',

'techstep',

'burningpaper',

'mindgap',

'voxefx',

'account',

'mendel',

'pckwan',

'perezvon',

'somafire',

'hatebu',

'neuralnoise',

'otsune',

'nyarla',

'sweetlove',

'Yappo',

'gyuque',

'jmworks',

'pal9999',

'jun_ichiro',

'fbis',

'tsuda',

'T0RU',

'umhr',

'anontwit',

'tatsugogo55',

't_muto',

'perl',

'spequer',

'cojix',

'camtarn',

'sfllaw',

'itkz',

'everes',

'plagger',

'mao999',

'yukkie',

'torikawa',

'metarand',

'mspeicher',

'mjollnir',

'dgcombs',

'harpere',

'twtg',

'y_arim',

'washyu',

'tomita',

'pecheurdeperles'

];

会話が成り立つかも

$VAR1 = [

'll_koba_ll',

'rytich',

'amachang',

'yusukebe',

'tsupo',

'Zoker',

'goricop',

'zakame',

'hakobe',

'issm',

'ikasam_a',

'lapis25',

'takesako',

'umiyosh',

'yksk',

'weboo',

'komatsuna',

'racoon',

'satoship',

'9232',

'masayashi',

'ikko',

'soel',

'himanainu_kawai',

'akio0911',

'moro',

'sekka',

'maedana',

'mzp',

'mazucon',

'tomisima',

'nekoya',

'k12u',

'citrocube',

'hitode909',

'kopug',

'arvined',

'osa',

'jimwalton',

'maybowjing',

'ban_yheld',

'rm233',

'Nick0510',

'kimidora',

'igoigo',

'nuwaa',

'kuy',

'teruyan',

'unclegeorge',

'benopt',

'MyUFO',

'Sixeight',

'm99oore',

'yheld',

'zedomax',

'satou30',

'taisei3200',

'bayside',

'jigenndaisuke',

'21c',

'hirameki',

'mapi',

'kasshy',

'rewish',

'Xyo'

];

 |