#!/usr/bin/perl use Net::Twitter; use strict; use vars qw($VERSION %IRSSI @DoW @MoY %MoY); @DoW = qw(Sun Mon Tue Wed Thu Fri Sat); @MoY = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec); @MoY{@MoY} = (1..12); my %GMT_ZONE = (GMT => 1, UTC => 1, UT => 1, Z => 1); use Irssi; $VERSION = '1.00'; %IRSSI = ( authors => 'Brian Caswell', contact => 'bmc@shmoo.com', name => 'twitter this', description => 'Send a twitter message', license => 'Public Domain', ); my $twit = Net::Twitter->new(username=>'druidian', password=>'password', source=>'From irssi'); my $date = time2str(time() - 3600); Irssi::command_bind 'tweet' => sub { my ($data, $server, $witem) = @_; return unless $witem; if ($data eq '') { $witem->print("tweet: example: /tweet "); } #$witem->print("tweet: $data"); $twit->update($data); twits(@_); }; Irssi::command_bind 'twits' => sub { twits(@_); }; sub twits (;$) { my ($data, $server, $witem) = @_; return unless $witem; my $friends = $twit->friends_timeline({'since' => $date}); if (@$friends) { @$friends = reverse(@$friends); foreach my $msg (@{ $friends }) { $witem->print("tweet/\033[0;31m" . $msg->{'user'}{'screen_name'} . "\033[0m:\033[0;32m " . $msg->{'text'} . "\033[0m"); } } else { $witem->print("twitter: your friends are too busy to tweet. WTF?"); } $date = time2str(time()-1); } sub time2str (;$) { my $time = shift; $time = time unless defined $time; my ($sec, $min, $hour, $mday, $mon, $year, $wday) = gmtime($time); sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT", $DoW[$wday], $mday, $MoY[$mon], $year+1900, $hour, $min, $sec); }