ターミナルからTwissrを使う
Twissr via TwitterとWassrのタイムラインを合成するだけの簡単なモジュールを作ってみた - すぎゃーんメモ
Sabotterっぽく、TwitterとWassrのタイムラインを合わせて出力したり、両方に同時にポストしたりするためのモジュールです。
という事で早速使ってみるのみならず、常に最新タイムラインが表示されつつPOSTできるスクリプトterm_twissr.pl書いてみた。
あ、Config::Pit 超絶無視してます。
#!/usr/local/bin/perl use strict; use warnings; use Getopt::Long; use List::MoreUtils qw(any); use Net::Wassr; use Net::Twitter; use Net::Twissr; Getopt::Long::GetOptions( '-d' => \my $daemon, '-u=s'=> \my $update, '-t' => \my $term, ); my $wassr = Net::Wassr->new( 'user' => '*****', 'passwd' => '*****', ); my $twitter = Net::Twitter->new( 'username' => '*****', 'password' => '*****', ); my $twissr = Net::Twissr->new(twitter => $twitter,wassr => $wassr,); local $| = 1; local $\ = "\n"; our $syscom = { quit => ['exit','quit','!q','!quit'], }; my $lastymd = 0; if ($daemon) { FORK: { if(my $pid = fork()) { while(1){ main_timeline(); sleep ($term || 60); } }elsif (defined $pid){ while(my $in = <STDIN>||''){ chomp $in; last if(any{ $in eq $_ } @{$syscom->{quit}}); cmd_io($in); } kill 9 ,$pid; exit(0); }else{ die "Can't fork: $\n"; } } }else{ if($update){ cmd_io($update); }else{ main_timeline(); } } exit(0); #============================================================================================= sub cmd_io{ my $in = shift; if($in =~ m{^!w(?:assr)?\s(.*)$}) { my $in = $1 ||''; my $args = { status => $in, }; $wassr->update($args) or die($!); return 1; } elsif($in =~ m{^!t(?:witter)?\s(.*)$}) { my $in = $1 ||''; $twitter->update($in) or die($!); return 1; } elsif($in =~ m{^!res(?:s)?\s(\w{10})\s(.*)$}) { my $in = $2 ||''; my $rid = $1 || ''; my $args = { reply_status_rid => $rid, status => $in, }; $wassr->update($args) or die($!); return 1; } elsif($in =~ m{^!}) { warn ("! method misspell:$in"); return 1; } elsif($in ne '') { $twissr->update($in) or die($!); return 1; } } sub main_timeline{ my $timeline = $twissr->friends_timeline(); for(sort { $a->{time} <=> $b->{time} } @$timeline){ my @t = localtime($_->{time}); my $yyyymmdd_24hmiss = sprintf("%04d/%02d/%02d %02d:%02d:%02d", $t[5] + 1900, $t[4]+1, $t[3], $t[2], $t[1], $t[0]); if($_->{time} > $lastymd){ my $log = "$yyyymmdd_24hmiss $_->{service} $_->{user_id}: $_->{text} ($_->{id})"; utf8::encode $log; print $log; $lastymd = $_->{time}; } } }
- d 付きで永続起動
- c で一回こっきり実効
- t が -d を指定したさいのtimelineの更新間隔(秒)
使用時のイメージは以下な感じ http://wassr.jp/user/likk/statuses/pu31wEd7yi
きちっと書いたら Net-Twassr/trunk/example 辺りに掘って置くかも