Wassrの発言をTwitterに転送するスクリプト

 いわゆるミニブログサービスは現在TwitterWassrを使っているのですが、徐々にWassrで発言することの方が多くなりました。
 メールでの投稿や画像付きのポストを標準でサポートしていること、携帯電話版のページが使いやすいこと、のメリットがやはり大きいですね。投稿の半分くらいは携帯からやってる気がする。

 でも、このままTwitterで発言しなくなるのも何か寂しいので、Wassrでの自分の発言をそのままTwitterに投稿するスクリプトを作ってみました。

スクリプトのルール:

  • 規定時間以内(デフォルト10分)にWassrで発言した内容を、そのままTwitterに投稿する
  • 画像付きの投稿をした場合、画像のURLも付加して投稿する
    • cronで10分間隔で回すことを想定
  • 例外として、
    • 誰かの発言へのレスポンスは対象としない(レスだけ切り出しても意味ないので)
    • “.”で終わる発言は対象としない(Wassrの外に出したくない発言をしたい時用)
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::Simple;
use Encode;
use CGI::Util qw(escape);

# Wassrのアカウント
my $WASSR_ID = 'WassrのID';
my $WASSR_PASSWORD = 'Wassrのパスワード';

# Twitterのアカウント
my $TWITTER_ID = 'TwitterのID';
my $TWITTER_PASSWORD = 'Twitterのパスワード';

my $LIMIT_TIME = 60 * 10;      # 転送する対象発言の規定時間(秒)
my $PASS_CHAR = '.';           # 末尾がこの文字列の場合、転送対象にしない
my @post_list = ();

# Wassrのポストを取得する
my $ua = LWP::UserAgent->new;
$ua->credentials('api.wassr.jp:80', 'API Authentication', $WASSR_ID, $WASSR_PASSWORD);
my $req = HTTP::Request->new('GET', 'http://api.wassr.jp/statuses/user_timeline.xml');
my $res = $ua->request($req);
die $res->status_line if (!$res->is_success);
my $xml = XMLin($res->content);

# 発言した順に並べ替える
my @id_list = sort(keys(%{$xml->{status}}));

foreach my $id (@id_list) {
    my $item = $xml->{status}->{$id};
    # 誰かへのレスポンスは対象としない
    next if (ref($item->{reply_user_login_id}) ne 'HASH');
    # 規定時間以上前の発言は対象としない
    next if (time() - $item->{epoch} > $LIMIT_TIME);
    # "."で終わる発言は対象としない
    next if (substr($item->{text}, -1 * length($PASS_CHAR)) eq $PASS_CHAR);
    # 画像が投稿されている場合、それも投稿に含める
    my $text = $item->{text};
    $text .= " $item->{photo_url}" if (ref($item->{photo_url}) ne 'HASH');
    # URLエスケープする
    $text = escape(encode('utf-8', $text));
    # 発言リストに追加
    push @post_list, $text;
}

# Twitterに投稿する
$ua->credentials('twitter.com:80', 'Twitter API', $TWITTER_ID, $TWITTER_PASSWORD);
foreach my $text (@post_list) {
    $req = HTTP::Request->new('POST', 'http://twitter.com/statuses/update.xml?status=' . $text);
    $res = $ua->request($req);
    last if (!$res->is_success);
}

# おわり
__END__

2009/02/16 のメモ

『「ちょっと酒癖が悪いくらいで引退なんてありえんだろ。アホなこと言うな」っていう気持ちだろう。それくらいの現状認識なんだと思う。』
中川財務大臣の件。もはやアル中の域まで達しているのでは?でも治療=政界引退なのでその選択もないのでは?との見解

『レゴ風デザインではなく、ちゃんとレゴから完全に認可されたリアル・レゴ携帯電話なんです!』
あっちの人のレゴに対する執着心は異常

ムスカを「社会から評価されず、理不尽に迫害される秀才」と見立てた「ムスカの涙 秀才受難時代のイコン」というエッセイが秀逸。この視点は面白いなと思った

Context Freeの3D版みたいなソフトウェア。
Context Freeもまだあまりいじってないのに、更にすごそうなものが!いじってる暇がないよう!

芸術を鑑賞する行為をゲームをプレイする行為に置き換えて考察。趣深く、納得できる

あれは頭がヤバかったのではなく、飲酒と風邪薬のコンボだったんか。それはヤバいですよ。必要以上に効きますよ。頭おかしくなるのも頷ける

中川財務相のあの挙動を見ていたら、なんか故小渕首相が倒れる前の記者会見で喋れなくなっていたシーンを思い出しました。体大丈夫なんだろうかこの方

Powered by Livedoor Clip
カテゴリー: Memo

2009/02/14 のメモ

封筒は郵便局に売っている…そう思っていた時期が僕にもありました(小学生低学年の頃)

小学生~高校生向けの経済書の紹介

Powered by Livedoor Clip
カテゴリー: Memo