use File::Temp;
use LWP::Simple;
use Data::Dumper;
+use Encode;
$Data::Dumper::Indent = 1;
use vars qw($VERSION %IRSSI);
-$VERSION = "2.2.5beta";
-my ($REV) = '$Rev: 673 $' =~ /(\d+)/;
+$VERSION = "2.2.5";
+my ($REV) = '$Rev: 687 $' =~ /(\d+)/;
%IRSSI = (
authors => 'Dan Boger',
contact => 'zigdon@gmail.com',
. 'Can optionally set your bitlbee /away message to same',
license => 'GNU GPL v2',
url => 'http://twirssi.com',
- changed => '$Date: 2009-07-16 16:50:30 -0700 (Thu, 16 Jul 2009) $',
+ changed => '$Date: 2009-08-07 01:24:53 -0700 (Fri, 07 Aug 2009) $',
);
my $window;
unless (
$twits{$username}->update(
{
- status => $data,
+ status => $data,
+
# in_reply_to_status_id => $id_map{ lc $nick }[$id]
}
)
$twit = "Net::$service"->new(
username => $user,
password => $pass,
- source => "twirssi"
+ source => "twirssi",
+ ssl => Irssi::settings_get_bool("twirssi_avoid_ssl") ? 0 : 1,
);
+ unless ($twit) {
+ ¬ice("Failed to create Net::$service object! Aborting.");
+ return;
+ }
+
+ if ( my $timeout = Irssi::settings_get_int("twitter_timeout") and $twit->can('ua')) {
+ $twit->ua->timeout($timeout);
+ }
+
unless ( $twit->verify_credentials() ) {
¬ice("Login as $user\@$service failed");
$twit = undef;
¬ice("Downloading twirssi from $URL");
LWP::Simple::getstore( $URL, "$loc.upgrade" );
+ unless ( -s "$loc.upgrade" ) {
+ ¬ice("Failed to save $loc.upgrade."
+ . " Check that /set twirssi_location is set to the correct location."
+ );
+ return;
+ }
+
unless ( $data or Irssi::settings_get_bool("twirssi_upgrade_beta") ) {
unless ( open( NEW, "$loc.upgrade" ) ) {
- ¬ice(
-"Failed to read $loc.upgrade. Check that /set twirssi_location is set to the correct location."
+ ¬ice("Failed to read $loc.upgrade."
+ . " Check that /set twirssi_location is set to the correct location."
);
return;
}
my $pid = fork();
if ($pid) { # parent
- Irssi::timeout_add_once( 5000, 'monitor_child', [ "$filename.done", 0 ] );
+ Irssi::timeout_add_once( 5000, 'monitor_child',
+ [ "$filename.done", 0 ] );
Irssi::pidwait_add($pid);
} elsif ( defined $pid ) { # child
close STDIN;
printf $fh "id:%u account:%s type:last_id timeline\n",
$new_poll_id, $username;
- print scalar localtime, " - Polling for replies" if &debug;
+ print scalar localtime, " - Polling for replies since ",
+ $id_map{__last_id}{$username}{reply}
+ if &debug;
$new_poll_id = 0;
eval {
if ( $id_map{__last_id}{$username}{reply} )
# pretend
if ( open FILE, $filename ) {
+ binmode FILE, ":utf8";
my @lines;
my %new_cache;
while (<FILE>) {
}
if (/^-- (\d+)$/) {
- ($new_last_poll) = ($1);
- last;
+ $new_last_poll = $1;
+ if ( $new_last_poll >= $last_poll ) {
+ last;
+ } else {
+ print "Impossible! ",
+ "new_last_poll=$new_last_poll < last_poll=$last_poll!"
+ if &debug;
+ undef $new_last_poll;
+ next;
+ }
}
my ( $f, $t ) = split ' ', $_;
$nicks{$f} = $friends{$f} = $t;
$window->printformat(
$line->[0],
"twirssi_" . $line->[1],
- @$line[ 2 .. $#$line-1 ],
- &hilight($line->[-1])
+ @$line[ 2 .. $#$line - 1 ],
+ &hilight( $line->[-1] )
);
}
}
}
}
- return $data;
+ return decode "utf8", $data;
}
sub normalize_username {
".irssi/scripts/twirssi.json" );
Irssi::settings_add_int( "twirssi", "twitter_friends_poll", 600 );
+Irssi::settings_add_int( "twirssi", "twitter_timeout", 30 );
Irssi::settings_add_bool( "twirssi", "twirssi_upgrade_beta", 0 );
Irssi::settings_add_bool( "twirssi", "tweet_to_away", 0 );
Irssi::settings_add_bool( "twirssi", "twirssi_hilights", 1 );
Irssi::settings_add_bool( "twirssi", "twirssi_always_shorten", 0 );
Irssi::settings_add_bool( "twirssi", "tweet_window_input", 0 );
+Irssi::settings_add_bool( "twirssi", "twirssi_avoid_ssl", 0 );
$last_poll = time - &get_poll_time;
$window = Irssi::window_find_name( Irssi::settings_get_str('twitter_window') );
sub { ¬ice("Device updated to $_[0]"); }
)
);
+ Irssi::command_bind(
+ "twitter_block",
+ &gen_cmd(
+ "/twitter_block <username>",
+ "create_block",
+ sub { ¬ice("Blocked $_[0]"); }
+ )
+ );
+ Irssi::command_bind(
+ "twitter_unblock",
+ &gen_cmd(
+ "/twitter_unblock <username>",
+ "destroy_block",
+ sub { ¬ice("Unblock $_[0]"); }
+ )
+ );
Irssi::signal_add_last( 'complete word' => \&sig_complete );
¬ice(" %Y<%C(%B^%C)%N TWIRSSI v%R$VERSION%N (r$REV)");