$shibayu36->blog;

株式会社はてなでエンジニアをしています。プログラミングや読書のことなどについて書いています。

自動でリフォローするスクリプト書いた

 仕事で自動リフォローを実装したので、だれでも使えるように書きなおして公開します。会社のアカウントとかでリフォローしまくりたい時には使ってみてください。

使い方

 ファイルはhttps://gist.github.com/718974に置いてあるので、ダウンロードして下さい。あとはconsumer_keyとかaccess_tokenとかは適当にとってきて、入力しておいてください。そのあとcronで回すなりしておけばひたすらrefollowし続けます。

#!perl
use strict;
use warnings;

use Readonly;
use Net::Twitter::Lite;

Readonly my $following_count_limit => 10;

my $consumer_key = 'YOUR_CONSUMER_KEY';
my $consumer_secret = 'YOUR_CONSUMER_SECRET';
my $access_token = 'YOUR_ACCESS_TOKEN';
my $access_token_secret = 'YOUR_ACCESS_TOKEN_SECRET';


my $twitter = Net::Twitter::Lite->new(
    consumer_key => $consumer_key,
    consumer_secret => $consumer_secret,
);
$twitter->access_token($access_token);
$twitter->access_token_secret($access_token_secret);

my $cursor = -1;
my $following_count_in_series = 0; # followerで何人連続followしているかを数えておく

FETCH_LOOP : while ($cursor != 0) {
    my $followers = $twitter->followers({ cursor => $cursor });
    $cursor = $followers->{next_cursor};

    for my $follower (@{$followers->{users}}) {
        if ($follower->{following}) {
            $following_count_in_series++;
            warn 'following before ', $follower->{screen_name};
        }
        else {
            $following_count_in_series = 0;
            $twitter->create_friend($follower->{screen_name});
            warn 'follow ', $follower->{screen_name};
        }

        # 連続でフォローしている数がしきい値を超えたら
        # これ以上フォローしていない人はいないとみなし、終了する
        last FETCH_LOOP if $following_count_in_series >= $following_count_limit;
    }
}

その他設計など

リフォローのためにDBとか用意するのはちょっと...って感じだったので、スクリプトで完結するようにしました。いちいち全フォロワーを取得するのはかなり重く、APIも使い過ぎるので、ちょっとだけ工夫して、これ以上フォローする人はいないと判断した時点で終わるようにしています。