mixiのエコーにポストするスクリプト書いた
mixiのエコーにコマンドラインから投稿したかったので、perlでスクリプト書きました。
#!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; use HTML::TreeBuilder; use Encode; my $x = 0; my $y = 0; my $mail = 'hoge@hoge.co.jp'; my $passwd = 'hogehoge'; my $next_url = "/home.pl"; my $login_url = 'https://mixi.jp/login.pl'; #my $home_url = 'https://mixi.jp/home.pl'; my $home_url = 'http://mixi.jp/recent_echo.pl';#仕様変更のため、urlを変更 my $echo_url = 'http://mixi.jp/add_echo.pl'; my @echo_com = @ARGV; die '入力なし' unless @echo_com; my $ua = new LWP::UserAgent(); $ua->cookie_jar({}); my $login_info = { next_url => $next_url, email => $mail, password => $passwd, }; my $res = $ua->post($login_url, $login_info); my $res_con = $ua->get($home_url); my $con = HTML::TreeBuilder->new_from_content($res_con->content); my @echo = $con->look_down( id => 'EchoComment', ); my @post_key; for my $echo(@echo){ @post_key = $echo->parent->parent->look_down( name => 'post_key', ); } my $post_key; for my $key_body(@post_key){ $post_key = $key_body->attr('value'); } for my $echo_com(@echo_com){ $echo_com = encode('euc-jp',decode('utf-8',$echo_com)); my $post_info = { body => $echo_com, x => 0, y => 0, redirect => 'home', post_key => $post_key, }; my $pos_res = $ua->post($echo_url => $post_info); sleep(1); }
一応、これで実行権限あげれば投稿できます。
追記
sleep(1)をしているのは、mixi側のサーバが連続投稿にはある一定の間隔をあけないと受け付けてくれないような設定になっている(推測)のためです。