M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2010年3月 6日 09:01

PerlでTwitterの自画像アイコンを分に応じて回転させる

このエントリーをはてなブックマークに追加 mixiチェック

(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に入れた場合はカレントディレクトリに注意。

投稿 大野 義貴 [Perl] | |

トラックバック(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 ... 続きを読む

コメントする