Twitter のアイコンを更新する Perl スクリプト (記事) が最近失敗することが多くなった。 どうやら同じファイル名の画像をアップロードするとうまく更新されないようなので、日時にもとづいたファイル名にしてからアップロードするようにしてみた。
最初に作った時から若干 Twitter のページ構造が変わってスクリプトも修正していたので、それと合わせると下記になる。
今のところ順調にアイコンチェンジできている感じだ。
#!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; use File::Temp qw(tempdir); use File::Spec; use File::Copy; die "no file name" if @ARGV == 0; my $file_name = $ARGV[0]; my $name = 'ユーザ名'; my $password = 'パスワード'; my $mechanize = WWW::Mechanize->new(); $mechanize->get('http://twitter.com/'); die unless $mechanize->success; $mechanize->submit_form(form_number => 2, fields => { 'session[username_or_email]' => $name, 'session[password]' => $password} ); die unless $mechanize->success; $mechanize->follow_link(url => '/account/settings'); die unless $mechanize->success; $mechanize->follow_link(url => '/account/picture'); die unless $mechanize->success; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); my $tmpdir = tempdir(CLEANUP => 1); $file_name =~ /.*(\..*)$/; my $suffix = $1; my $tmp_file_name = File::Spec->catfile( $tmpdir, sprintf("%04d%02d%02d%02d%02d%02d$suffix", $year + 1900, $mon + 1, $mday, $hour, $min, $sec )); copy($file_name, $tmp_file_name) or die $!; $mechanize->submit_form( form_number => 1, fields => {'profile_image[uploaded_data]' => $tmp_file_name} ); die unless $mechanize->success;
[ WWW::Mechanaize ]
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。