2012/12/24

[Perl]全垢r4sしてみた。

,
 いちいち手動でr4sするのもめんどくさくなってきた時に、「Perlなら捗るよ」という魔の一言を聞いたので、やってみた。

1)開発環境を入れる。

 私はWindows使いなので、Google先生のお言葉に習ってActivePerlというのを入れました。インストールは次へをひたすら連打するゲームです。
 
 次に、インストールされたらTwitterを扱うライブラリらしい、Net::Twitterというのを入れます。インストールフォルダ/binでコマンドラインからcpan.bat→cpan>ってなったらinstall Net::Twitter。しばらくうにょうにょしてるので、必要に応じてyesって入れてれば終わります。

2)コード書く

 まず、呟くのからやってみました。PerlでTwitter投稿(Net::Twitter) - KWの徒然Blog。。。 さんのコードをコピペ…

『Can't locate Net/Twitter.pm in @INC (@INC contains: [インストールフォルダ]/Perl/site/lib [インストールフォルダ]/Perl/lib
 .) at ***.pl line 2.
BEGIN failed--compilation aborted at ***.pl line 2.』
と言ったエラーが出る場合は、そのライブラリのuse文の前に、
lib use '[Net::Twitterのインストール先(...\Perl\cpan\build\Net-Twitter-3.18004-fC4xoV\libとか)]'
という一文を追加しましょう。

次に、access_tokenとかを取得します、Perl + Net::Twitter + OAuth で自分のリスト内の人を別アカウントで全部followしちゃうよ - XXXannexさんを参考にしました。

で、コード書きます。こんな感じ。

use lib '[インストール先]/Perl/cpan/build/Net-Twitter-3.18004-fC4xoV/lib';
use Net::Twitter;

use utf8;
use strict;
use warnings;
use Encode qw/decode/;

#必要に応じて変えてください
my $consumer_key = "[ここにconsumer keyいれる]";
my $consumer_secret = "[ここにconsumer secretいれる]";

my $token_ref = [ ["[ここに1つめのアカウントのaccess tokenいれる]"],
     ["[ここに1つめのアカウントのaccess token secretいれる]"],
     ["[ここに2つめのアカウントのaccess tokenいれる]"],
     ["[ここに2つめのアカウントのaccess token secretいれる]"],
     ["[ここに3つめのアカウントのaccess tokenいれる]"],
     ["[ここに3つめのアカウントのaccess token secretいれる]"]];

my $nt = Net::Twitter->new(
  consumer_key => $consumer_key,
  consumer_secret => $consumer_secret,
  #access_token => $token,
  #access_token_secret => $token_secret,
  ssl => 1,
);

#コマンドラインから引数を取得、Shift-JISから内部エンコードのUTF-8に変える。
my $screen_name = decode('Shift_JIS', $ARGV[0]);

#スクリーンネームからidを取得、原理上つぶやき0がこれだとスパム出来ない
my $target_id = "";

eval {
  my $statuses = $nt->user_timeline({id  => $screen_name});
  for my $status ( @$statuses ) {
    $target_id = $status->{user}{id};
    last;
  }
};

print "spam target : $target_id\n";

#連スパム
foreach my $arre (@{$token_ref}){
 $nt->access_token($arre->[0]);
 $nt->access_token_secret($arre->[1]);
 my $result = $nt->report_spam($target_id);
}
でもってコマンドラインから
perl [このスクリプトのファイル名].pl [スパムしたい相手のスクリーンネーム]
と入力します。一応確かめてみたらスパム報告できてるみたいです。

0 コメント to “[Perl]全垢r4sしてみた。”

コメントを投稿