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





![: Amazon.co.jp: プラスティック・メモリーズ 1【完全生産限定版】(イベントチケット優先販売申込券付) [Blu-ray]](/lists/_9/B00VWX66E8.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 2【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66K2.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 3【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6MV0.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 4【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX66IO.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 5【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX6Y0E.jpg)
![: Amazon.co.jp: プラスティック・メモリーズ 6【完全生産限定版】[Blu-ray]](/lists/_9/B00VWX69D6.jpg)


コメントする