X-Git-Url: https://git.sommitrealweird.co.uk/twirssi-net-twitter-lite.git/blobdiff_plain/a6c66dd36bdcbd7c740827e5cf37fb4ade5d0a61..af54a1d3ee07def1c55e8998c258576264c339c3:/twirssi.pl?ds=sidebyside diff --git a/twirssi.pl b/twirssi.pl index fc59bc8..bd11993 100644 --- a/twirssi.pl +++ b/twirssi.pl @@ -11,8 +11,8 @@ $Data::Dumper::Indent = 1; use vars qw($VERSION %IRSSI); -$VERSION = "2.0.5"; -my ($REV) = '$Rev: 480 $' =~ /(\d+)/; +$VERSION = "2.0.6"; +my ($REV) = '$Rev: 485 $' =~ /(\d+)/; %IRSSI = ( authors => 'Dan Boger', contact => 'zigdon@gmail.com', @@ -21,7 +21,7 @@ my ($REV) = '$Rev: 480 $' =~ /(\d+)/; . 'Can optionally set your bitlbee /away message to same', license => 'GNU GPL v2', url => 'http://twirssi.com', - changed => '$Date: 2009-02-18 13:41:52 -0800 (Wed, 18 Feb 2009) $', + changed => '$Date: 2009-02-23 14:17:26 -0800 (Mon, 23 Feb 2009) $', ); my $window; @@ -34,6 +34,7 @@ my %nicks; my %friends; my %tweet_cache; my %id_map; +my $failwhale = 0; my %irssi_to_mirc_colors = ( '%k' => '01', '%r' => '05', @@ -81,20 +82,25 @@ sub cmd_direct_as { return unless &valid_username($username); eval { - unless ( $twits{$username} + if ( $twits{$username} ->new_direct_message( { user => $target, text => $text } ) ) { + ¬ice("DM sent to $target"); + $nicks{$target} = time; + } else { + my $error; + eval { + $error = JSON::Any->jsonToObj( $twits{$username}->get_error() ); + $error = $error->{error}; + }; + die $error if $error; ¬ice("DM to $target failed"); - return; } }; if ($@) { - ¬ice("DM caused an error: $@. Aborted"); + ¬ice("DM caused an error: $@"); return; - } else { - ¬ice("DM sent to $target"); - $nicks{$target} = time; } } @@ -141,16 +147,18 @@ sub cmd_tweet_as { return if &too_long($data); + my $success = 1; eval { unless ( $twits{$username}->update($data) ) { ¬ice("Update failed"); - return; + $success = 0; } }; + return unless $success; if ($@) { - ¬ice("Update caused an error. Aborted."); + ¬ice("Update caused an error: $@. Aborted."); return; } @@ -227,17 +235,20 @@ sub cmd_reply_as { $data = "\@$nick " . $data; } - if ( Irssi::settings_get_str("short_url_provider") ) { - foreach my $url ( $data =~ /(https?:\/\/\S+[\w\/])/g ) { - eval { - my $short = makeashorterlink($url); - $data =~ s/\Q$url/$short/g; - }; + if ( &too_long( $data, 1 ) ) { + if ( Irssi::settings_get_str("short_url_provider") ) { + foreach my $url ( $data =~ /(https?:\/\/\S+[\w\/])/g ) { + eval { + my $short = makeashorterlink($url); + $data =~ s/\Q$url/$short/g; + }; + } } } return if &too_long($data); + my $success = 1; eval { unless ( $twits{$username}->update( @@ -249,12 +260,13 @@ sub cmd_reply_as { ) { ¬ice("Update failed"); - return; + $success = 0; } }; + return unless $success; if ($@) { - ¬ice("Update caused an error. Aborted"); + ¬ice("Update caused an error: $@. Aborted"); return; } @@ -281,13 +293,15 @@ sub gen_cmd { return; } + my $success = 1; eval { unless ( $twit->$api_name($data) ) { ¬ice("$api_name failed"); - return; + $success = 0; } }; + return unless $success; if ($@) { ¬ice("$api_name caused an error. Aborted."); @@ -490,13 +504,6 @@ sub cmd_upgrade { return; } - if ( not -x "/usr/bin/md5sum" and not $data ) { - ¬ice( -"/usr/bin/md5sum can't be found - try '/twirssi_upgrade nomd5' to skip MD5 verification" - ); - return; - } - my $md5; unless ($data) { eval { use Digest::MD5; }; @@ -628,6 +635,7 @@ sub get_updates { return unless &logged_in($twit); my ( $fh, $filename ) = File::Temp::tempfile(); + binmode($fh, ":utf8"); my $pid = fork(); if ($pid) { # parent @@ -689,7 +697,8 @@ sub do_updates { }; if ($@) { - print $fh "type:debug Error during friends_timeline call. Aborted.\n"; + print $fh + "type:debug Error during friends_timeline call: $@. Aborted.\n"; return 1; } @@ -970,6 +979,7 @@ sub monitor_child { ¬ice("Failed to write replies to $file: $!"); } } + $failwhale = 0; return; } } @@ -992,6 +1002,21 @@ sub monitor_child { } else { $since = scalar localtime($last_poll); } + + if (not $failwhale and time - $last_poll > 60*60) { + foreach my $whale ( + q{ v v v}, + q{ | | v | v}, + q{ | .-, | | |}, + q{ .--./ / | _.---.| }, + q{ '-. (__..-" \\}, + q{ \\ a |}, + q{ ',.__. ,__.-'/}, + q{ '--/_.'----'`}) { + ¬ice($whale); + } + $failwhale = 1; + } ¬ice("Haven't been able to get updated tweets since $since"); } }