JAGAT SNSの日記に投稿するPerlスクリプト
スポンサードリンク
JAGAT SNSは、DTPエキスパート認証の更新試験をWebで申し込むといやがおうにでも入らせられるSNSでありまして、このSNSを使って回答を交換しろってことかな? JAGATも粋な計らいをしやがる。更新試験料7000円を払って良かった! て思ったら全くそういう動きがありません。というわけで、せっかく入ったJAGAT SNSなので、日記を投稿するサンプルスクリプトです。
JAGAT SNSはOpenPNEだと思うので、もしかしたらOpenPNEでできている他のSNSでも使えるかもね。
スクリプトを動かす前に、上記リンク先を参照して、コマンドラインからアカウントとパスワードをセットしておこう。こんな感じでいいのでは。
$ perl -MConfig::Pit -e'Config::Pit::set("www.jagat.jp", data=>{ username => "ABC12345", password => "password" })'
filename: jagatsns_post_diary.pl
#!/usr/bin/perl use strict; use warnings; use utf8; use GD; use Config::Pit; use Encode; use URI::Fetch; use XML::Feed; use WWW::Mechanize; # JAGAT SNSの自分のアカウント情報はConfig::Pitで # あらかじめセットしておこう。コマンドラインからは # $ perl -MConfig::Pit -e'Config::Pit::set("www.jagat.jp", data=>{ username => "ABC12345", password => "password" })' my $config = pit_get("www.jagat.jp"); die "not preset account data in Pit." if !%$config; my $username = $config->{username} or die 'username not found.'; my $password = $config->{password} or die 'password not found.'; # ダミー画像(1x1pxの白のgif画像)のファイル名。無ければ作る。 my $dummy_image = 'dummy.gif'; # Mechanize 初期化 my $mech = WWW::Mechanize->new(); $mech->agent_alias( 'Windows Mozilla' ); # Main set_dummy(); write_sns(); exit; sub set_dummy { return if -e $dummy_image; my $im = new GD::Image(1,1); $im->fill(0,0, $im->colorAllocate(255,255,255) ); open my $fh, '>', $dummy_image or die $!; print $fh $im->gif; close $fh; return; } sub write_sns { # JAGAT SNSログイン login( $username, $password ); # 日記書き込み post( "タイトル", "本文" ); # JAGAT SNSへ投稿 return; } sub login { # JAGAT SNSへログイン my $username = shift; my $password = shift; my $res = $mech->get('http://www.jagat.jp/mypage/login.php'); $mech->form_number(2); $mech->set_visible( $username, $password ); $mech->submit(); die 'Login Failed.' if ($mech->uri() =~m|https://www.jagat.jp/index.php?option=login|); return; } sub post { # JAGAT SNS Todoへ投稿 my $subject = shift; my $body = shift; my $res = $mech->get('http://www.jagat.jp/igns/?m=pc&a=page_h_diary_add'); $mech->form_number(1); # HTML内の1番目のフォーム $mech->set_fields( subject => $subject, body => $body, public_flag => 'private', upfile_1 => $dummy_image, upfile_2 => $dummy_image, upfile_3 => $dummy_image, ); $mech->submit(); # 送信 sleep 3; $mech->form_number(1); # HTML内の1番目のフォーム $mech->submit(); # 送信 return; }__END__
画像のダミーファイルを送っているところあたりもうちょっとスマートにできそうなんですが、とりあえず目的は達成できるかな。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2959
コメントする