2週間ほど前にtwitterfeed で Flickr に写真をアップロードしたら自動的に Twitter にタイトルと URL をポストするようにしたのだが、これだと写ツみたいに画像そのものはポストされず今一歩なので、写真自体を自動的に Twitter アイコンにアップロードするようにしてみた。
流れは以下:
例えば今日 VQ1005 で撮影して Flickr にアップロードした写真を自動的に加工させたものがコレ。
なんか偽中継のような嘘臭さがあるけれど、まあだいたいアップロードした写真は自分が実際にその場にいたのだから、あながちでもないんじゃないか。
API 経由では Twitter のアイコンを変更できなさそうなので、WWW::Mechanize でアイコン画像をアップロードする Perl スクリプトを書いてみた。
#!/usr/bin/perl use strict; use warnings; use WWW::Mechanize; 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 => 1, fields => { username_or_email => $name, password => $password}); die unless $mechanize->success; $mechanize->follow_link(text => 'Settings'); die unless $mechanize->success; $mechanize->follow_link(text => 'Picture'); die unless $mechanize->success; $mechanize->submit_form( form_number => 1, fields => {'profile_image[uploaded_data]' => $file_name} ); die unless $mechanize->success;
まず Windows XP BOX に、Skype4COM 1.0.28.2 を入れる。 Skype4COM-1.0.28.2.zip をとってきて展開し、アーカイブの中の DLL を登録する。
regsvr32 Skype4COM.dll
次に以下のスクリプトを書いて、例えば setskypeavatar.js というファイルに保存する。
skype = WScript.CreateObject("Skype4COM.Skype"); skype.Settings.LoadAvatarFromFile("C:\avatar.png");
で、Skype を実行してログインしている状態でコマンドプロンプトから
start setskypeavatar.js
で実行する(あるいはエクスプローラ上から実行する)。Skype 側が「他のプログラムが Skype にアクセスしようとしています」というダイアログを表示するので連携を許可してあげると、アバタが avatar.png の画像に変更される。
細かい点気にしなけば簡単。
なお今回のように単純に Windows Script Host から API 接続すると、WScript.exe に対しての許可を与えなければならないので、その点は注意が必要。
ちなみに Skype for Linux では API にある「SET AVATAR」コマンドがまだ使えないので、同様のことが実現できなかった。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。