半年ぐらい前に Skype for Linux で Twitter への書き込みを自動的に Skype ムードメッセージに設定するスクリプト(記事)を作って cron で 10分毎に更新するようにした。
Windows BOX 上 Skype を使っている時も同様にできるように、Skype4COM を使うバージョンも書いてみた。 D-Bus ではなく Skype4COM を使うようにすることと、Skype4COM にはシフト JIS の文字列を渡すようにすること以外はほとんど同じ。
Skype4COM の DLL を登録し、Skype が起動している状態で以下の Perl スクリプトを実行。
#!/usr/bin/perl use strict; use warnings; use Win32::OLE; use URI::Fetch; use XML::RSS; use Date::Parse; use Encode; my $id = '自分の Twitter ID'; my $time = time; my $fetch_response = URI::Fetch->fetch( "http://twitter.com/statuses/user_timeline/$id.rss?dummy=$time") or die URI::Fetch->errstr; my $rss = XML::RSS->new; $rss->parse($fetch_response->content); die 'no items' if @{$rss->{items}} == 0; my $item = $rss->{items}->[0]; my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(str2time($item->{pubDate})); my $title = $item->{title}; my $mood = sprintf("$title [%02d/%02d %02d:%02d]", $mon + 1, $mday, $hour, $min); $mood = Encode::encode('shiftjis', $mood); my $skype = Win32::OLE->new('Skype4COM.Skype'); $skype->Client->Start unless $skype->Client->IsRunning; my $profile = $skype->CurrentUserProfile; $profile->{MoodText} = $mood;
インストール済みだった ActivePerl 5.8.8.822 で動作を確認(ちなみに現時点での最新は ActivePerl 5.10.0.1003)。なお URI::Fetch、XML::RSS、Date::Parse(TimeDate) は標準では入っていないので PPM パッケージでインストール。
タスク スケジューラで10分毎に上記のスクリプトを wperl.exe で実行するように設定。 これで Windows 上でもさえずりをムードメッセージに設定できるようになった。
Naney (なにい)です。株式会社ミクシィで SNS 事業の部長をしています。
nDiki は1999年1月に始めたコンピュータ日誌を前身とする Naney の Web 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。
※内容は個人的見解であり所属組織とは関係ありません。