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: 663 $' =~ /(\d+)/;
+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-08 16:25:21 -0700 (Wed, 08 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->verify_credentials() ) {
¬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, 0 ] );
+ Irssi::timeout_add_once( 5000, 'monitor_child',
+ [ "$filename.done", 0 ] );
Irssi::pidwait_add($pid);
} elsif ( defined $pid ) { # child
close STDIN;
print $fh "-- $new_poll";
}
close $fh;
+ rename $filename, "$filename.done";
exit;
} else {
&ccrap("Failed to fork for updating: $!");
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::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') );