にぽくんぼっと
センター試験の日に仕掛けたにぽくんぼっとのソースコード。汚いけど許して。
今回は通常のbotのようにランダムではなく、cronで時間を指定して、1つずつ決められた順番でつぶやくようにしておいた。ファイル操作の定石みたいなのを教えて欲しい。矢印演算子苦手。
#!/usr/bin/perl #にぽくんぼっと Ver.1.08 @TWEETs=('あ', '倫理政経クッソ簡単wwww97は行ったと思われる。やはり新科目は易しい。', '国語20分余ったんですけどwww9割行ったかもwwwww', '英語難易度下がったかな、満点行ったわ。3回解き直した。', 'リスニングは模試の方が難しかったわwwwあっても1ミスかなーwww', 'いよいよ明日がセンター試験本番ですよ!むっちゃドキドキしてきた・・・。受験生の皆さん、今日くらいは勉強は休んで明日に備えますよね?', '理科wwwww対策する必要無かったわwww', 'あっぶねーwww確率のミスに気づいて焦ったわ;;でも全部解答できたし大丈夫だろ。', 'IIB20分余った><よほど簡単だったのかもしれん。平均上がるわ。', '一連の発言は全てbotです。大ウソです。'); use FindBin; open FH, "$FindBin::Bin/count__.txt"; $i=<FH>; chomp $i; $tweet=$TWEETs[$i]; close FH; open FFH, ">$FindBin::Bin/count__.txt"; print FFH ++$i; close FFH; $token='244(トークン中略)X7m'; $tweet =~ s/([^a-zA-Z0-9\.\-\~\_])/'%'.uc(unpack('H2', $1))/eg; $tweet =~ s/\+/%20/g;$twee=$tweet; $tweet =~ s/([^a-zA-Z0-9\.\-\~\_])/'%'.uc(unpack('H2', $1))/eg; $tweet =~ s/\%0A//g; use LWP::UserAgent; use LWP::Simple; $key='pK(中略)5g'; $method='HMAC-SHA1'; $time=time; $nonce=time+time*7; $ver='1.0'; $secret='9bZ(シークレット中略)6vY&'. 'ySm(シークレット中略)IQQ'; $data="POST&http%3A%2F%2Fapi.twitter.com%2F1%2Fstatuses%2Fupdate.xml&oauth_consumer_key%3D$key%26oauth_nonce%3D$nonce%26oauth_signature_method%3D$method%26oauth_timestamp%3D$time%26oauth_token%3D$token%26oauth_version%3D$ver%26status%3D$tweet"; use Digest::HMAC_SHA1 qw(hmac_sha1 hmac_sha1_hex); use MIME::Base64; $digest = encode_base64(hmac_sha1($data, $secret)); $digest =~ s/([\W])/'%'.uc(unpack('H2', $1))/eg; $digest =~ s/\%0A//g; $ua = LWP::UserAgent->new; $url = 'http://api.twitter.com/1/statuses/update.xml'; $query_string = "oauth_consumer_key=$key&oauth_nonce=$nonce&oauth_signature_method=$method&oauth_timestamp=$time&oauth_token=$token&oauth_version=$ver&status=$twee&oauth_signature=$digest"; $req = HTTP::Request->new(POST => $url); $req->content_type('application/x-www-form-urlencoded'); $req->content($query_string); $res = $ua->request($req); $XMLDATA=$res->content; print "Content-type: text/html\n\n"; print $tweet; __END__