nDiki : 2008年03月13日

2008年3月13日 (木)

Flickr写真を自動的に Twitter アイコンにする

2週間ほど前にtwitterfeed で Flickr に写真をアップロードしたら自動的に Twitter にタイトルと URL をポストするようにしたのだが、これだと写ツみたいに画像そのものはポストされず今一歩なので、写真自体を自動的に Twitter アイコンアップロードするようにしてみた。

流れは以下:

  1. cron で定期的に FlickrRSS フィードをフェッチする (URI::Fetch + XML::RSS)。
  2. 新しい写真アップロードされていたら(最新の写真が変化していたら)、RSS フィード中のサムネイル画像 URL を抜き出して画像をダウンロードする (URI::Fetch)。
  3. 正方形に crop。それからころころ Twitter アイコンを変えると誰だかわからなくなるので、決まった画像 (今のところ自分の写真)を重ねる (ImageMagick / PerlMagick)。
  4. Twitterアップロードする(アップロードスクリプト)。

例えば今日 VQ1005 で撮影して Flickrアップロードした写真を自動的に加工させたものがコレ。

image:nDiki/2008/03/Twitter-icon-2008-03-13.jpg

なんか偽中継のような嘘臭さがあるけれど、まあだいたいアップロードした写真は自分が実際にその場にいたのだから、あながちでもないんじゃないか。

TwitterアイコンPerl スクリプトで更新する

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;

Skype のアバタを WSH 上の JScript スクリプトで変更する

まず 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」コマンドがまだ使えないので、同様のことが実現できなかった。

[ 3月13日全て ]

About

Naney Naneymx

Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。

※本サイトの内容は個人的見解であり所属組織とは関係ありません。

Process Time: 0.019198s / load averages: 0.48, 0.61, 0.51