PerlでTwitterの自画像アイコンを分に応じて回転させる
スポンサードリンク
(2010-6-29 15:01追記)
Net::Twitter 3.12以降だと画像アップロードルーチンをこっちに差し替えた方がいいです。M.C.P.C.: Net::Twitterで自画像Uploadは3.12あたりでできるように直っているようだ)
飲み会用のネタ。cronに仕込んでね。あまりやりすぎると、TwitterからBANされるかも……
#!/usr/bin/perl use strict; use warnings; use Config::Pit; use Image::Magick; use WWW::Mechanize; my $p = pit_get( 'twitter.com@CLCLCL' ); die "not preset account data in Pit." if !%$p; my $username = $p->{username}; my $password = $p->{password}; my $file = 'cl.png'; my $im = Image::Magick->new; $im->Read($file); my ( $x, $y ) = $im->Get( 'width', 'height' ); $im->Set(bordercolor=>'#FFFFFF'); my $deg = (localtime(time))[1] / 60 * 360; $im->Rotate(degrees => $deg, crop => 0, sharpen => 1); my ( $nx, $ny ) = $im->Get( 'width', 'height' ); $im->Crop(width => $x, height => $y, x => ($nx - $x) / 2, y => ($ny - $y) / 2, ); my $tmpfile = time.".png"; $im->write("png:$tmpfile"); my $mech = WWW::Mechanize->new(); $mech->agent_alias( 'Windows IE 6' ); my $res = $mech->get('https://twitter.com/settings/profile'); die if $mech->uri() ne 'https://twitter.com/login'; $mech->submit_form( form_number => 2, fields => { 'session[username_or_email]' => $username, 'session[password]' => $password, }, button => 'commit', ); $mech->submit_form( form_number => 2, fields => {'profile_image[uploaded_data]' => $tmpfile, } ); unlink $tmpfile; exit; __END__
Twitterクライアント側でアイコンキャッシュしていることも多いからあんまり意味ないかも。あと、cronに入れた場合はカレントディレクトリに注意。
スポンサードリンク
トラックバック(1)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/3152
2010年2月あたりに使っていたNet::Twitterじゃ、自画像Uploadができず、 M.C.P.C.: PerlのWWW::Mechanizeを使って2010年3月現在のTwitterで自画像をアップロード というのを書いた。しかし、実際に使ってみると、Twitterが重い時間帯だと、更新に失敗することがある。SSLで接続するとタイムアウトしたりする。まあなあ。 んで、最近Net::Twitterを更新したら3.12になっていて、画像アップロードのメソッドがちゃんと動くようになった。 my ... 続きを読む
コメントする