Webtech Walker

im.kayac.comでiPhoneにtwitterのリプライを通知する

im.kayac.comというカヤックのサービスがあるんですが、これを使うとIMとかにHTTPとかメール経由で通知することができて、iPhoneにも対応したのでtwitterでリプライがあったら通知するスクリプト書いてみました。

#!/usr/bin/env perl

use strict;
use warnings;

use AnyEvent::Twitter::Stream;
use AnyEvent::HTTP;
use HTTP::Request::Common;

my $done = AnyEvent->condvar;

my $streamer = AnyEvent::Twitter::Stream->new(
    username => 'twitter_username',
    password => 'twitter_password',
    method => 'filter',
    track => '@twitter_username',
    on_tweet => sub {
        my $tweet = shift;
        my $req = POST 'http://im.kayac.com/api/post/im_username', [
            message => "$tweet->{user}{screen_name}: $tweet->{text}",
            password => 'im_password',
        ];

        my %headers = map { $_ => $req->header($_), } $req->headers->header_field_names;
        my $r;
        $r = http_post $req->uri, $req->content, headers => \%headers, sub { undef $r };
    },
    on_error => sub {
        my $error = shift;
        warn "ERROR: $error";
        $done->send;
    },
    on_eof => sub {
        $done->send;
    },
);

$done->recv;

これを起動しておけば自分宛のtweetがiPhoneに通知されます。こんなかんじ。

iPhoneにTwitterの通知がきてるキャプチャ

いいかんじ。typester++

追記:POSTパラメータにhandlerというのを指定するとiPhoneで起動するアプリを指定できるというのをtypesterに教えてもらった。

handler => 'tweetie://',

とか書いておけば通知をタップするとtweetieを起動できる。便利!

このエントリーをはてなブックマークに追加