nDiki

2008年2月25日 (月)

Twitter への書き込みを自動的に Skype ムードメッセージに設定する

Linux for SkypeSkype APID-Bus を使ってアクセスすることができる。 Debian GNU/Linux sid 上の Skype for Linux 2.0.0.43 で、Perl スクリプトから自動的にムードメッセージを更新するようにしてみた。

Skype が起動している状態で以下のスクリプトを実行する。

 #!/usr/bin/perl

 use strict;
 use warnings;
 use Net::DBus;
 use URI::Fetch;
 use XML::RSS;
 use Date::Parse;

 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("[%02d/%02d %02d:%02d] $title", $mon + 1, $mday, $hour, $min);
 my $bus      = Net::DBus->session;
 my $service  = $bus->get_service('com.Skype.API') or die;
 my $invoker  = $service->get_object('/com/Skype') or die;
 my $response = $invoker->Invoke('NAME twitter2skypemood');
 die $response if $response ne 'OK';
 $response = $invoker->Invoke('PROTOCOL 5');
 die $response if $response ne 'PROTOCOL 5';
 $response = $invoker->Invoke("SET PROFILE MOOD_TEXT $mood");

image:nDiki/2008/02/Skype-API-auth.png

のようなダイアログが表示されるので、「この選択を記憶する」をチェックして、はいを選択。

そうすると RSS フィードとしてとってきた 自分の Twitter メッセージが、Skype のムードメッセージに表示される。自分の環境では日本語も問題なく表示される。

うまくいったので cron で定期的に更新するようにしてみた。

Skype API 面白いかも。

追記

スポンサード リンク
[ 2月25日全て ]

About Me

Naney Naney (なにい)です。株式会社ミクシィの SNS の企画開発を行うグループでマネージャー・プロダクトオーナーをしています。CS 向上・ユーザーサポート・健全化などにも取り組んでいます。

nDiki1999年1月に始めたコンピュータ日誌を前身とする NaneyWeb 日記(兼パーソナルナレッジベース)です。ちょっとしたノートは nNote にあります。

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

月別インデックス
Process Time: 0.330656s / load averages: 0.42, 0.39, 0.34
nDiki by WATANABE Yoshimasa (Naney, Google profile)
Powered by DiKicker