X-Git-Url: https://git.sommitrealweird.co.uk/twirssi-net-twitter-lite.git/blobdiff_plain/8114683d7cb6d635d5edc2945277dd59e11a7a87..717ae7d2c8a4e7fe6e6369f0e385d3b4f5800b6f:/twirssi.pl?ds=inline diff --git a/twirssi.pl b/twirssi.pl index 80ee243..ee06ff6 100644 --- a/twirssi.pl +++ b/twirssi.pl @@ -11,7 +11,7 @@ $Data::Dumper::Indent = 1; use vars qw($VERSION %IRSSI); -$VERSION = "2.3.0"; +$VERSION = "2.3.4beta"; %IRSSI = ( authors => 'Dan Boger', contact => 'zigdon@gmail.com', @@ -175,25 +175,28 @@ sub cmd_retweet_as { } $text =~ s/\$t/$id_map{__tweets}{ lc $nick }[$id]/; + my $modified = $data; $data = &shorten($text); - return if &too_long($data); + return if $modified and &too_long($data); my $success = 1; eval { - unless ( - $twits{$username}->update( + if ($modified) + { + $success = $twits{$username}->update( { status => $data, # in_reply_to_status_id => $id_map{ lc $nick }[$id] } - ) - ) - { - ¬ice("Update failed"); - $success = 0; + ); + } else { + $success = + $twits{$username}->retweet( { id => $id_map{ lc $nick }[$id] } ); + $success = $success->{id} if ref $success; } + ¬ice("Update failed") unless $success; }; return unless $success; @@ -490,7 +493,7 @@ sub cmd_login { } $defservice = $service = ucfirst lc $service; - eval "use Net::$service"; + eval "use Net::$service 3.05"; if ($@) { ¬ice( "Failed to load Net::$service when trying to log in as $user: $@"); @@ -513,6 +516,7 @@ sub cmd_login { and $twit->can('ua') ) { $twit->ua->timeout($timeout); + ¬ice("Twitter timeout set to $timeout"); } unless ( $twit->verify_credentials() ) { @@ -935,14 +939,14 @@ sub do_updates { eval { if ( $id_map{__last_id}{$username}{timeline} ) { - $tweets = $obj->friends_timeline( { count => 100 } ); + $tweets = $obj->home_timeline( { count => 100 } ); } else { - $tweets = $obj->friends_timeline(); + $tweets = $obj->home_timeline(); } }; if ($@) { - print $fh "type:debug Error during friends_timeline call: Aborted.\n"; + print $fh "type:debug Error during home_timeline call: Aborted.\n"; print $fh "type:debug : $_\n" foreach split /\n/, Dumper($@); return undef; } @@ -953,18 +957,19 @@ sub do_updates { eval { $error = JSON::Any->jsonToObj( $obj->get_error() ) }; unless ($@) { $error = $obj->get_error() } print $fh - "type:debug API Error during friends_timeline call: Aborted\n"; + "type:debug API Error during home_timeline call: Aborted\n"; print $fh "type:debug : $_\n" foreach split /\n/, Dumper($error); } else { print $fh - "type:debug API Error during friends_timeline call. Aborted.\n"; + "type:debug API Error during home_timeline call. Aborted.\n"; } return undef; } foreach my $t ( reverse @$tweets ) { - my $text = decode_entities( $t->{text} ); + my $text = + decode_entities( $t->{retweeted_status}{text} || $t->{text} ); $text =~ s/[\n\r]/ /g; my $reply = "tweet"; if ( Irssi::settings_get_bool("show_reply_context") @@ -984,7 +989,9 @@ sub do_updates { $context = $cache->{ $t->{in_reply_to_status_id} }; if ($context) { - my $ctext = decode_entities( $context->{text} ); + my $ctext = + decode_entities( $context->{retweeted_status}{text} + || $context->{text} ); $ctext =~ s/[\n\r]/ /g; if ( $context->{truncated} and ref($obj) ne 'Net::Identica' ) { $ctext .= @@ -1035,7 +1042,8 @@ sub do_updates { next if exists $friends{ $t->{user}{screen_name} }; - my $text = decode_entities( $t->{text} ); + my $text = + decode_entities( $t->{retweeted_status}{text} || $t->{text} ); $text =~ s/[\n\r]/ /g; if ( $t->{truncated} ) { $text .= " -- http://twitter.com/$t->{user}{screen_name}" @@ -1106,7 +1114,8 @@ sub do_updates { $search->{max_id}, $username, $topic; foreach my $t ( reverse @{ $search->{results} } ) { - my $text = decode_entities( $t->{text} ); + my $text = + decode_entities( $t->{retweeted_status}{text} || $t->{text} ); $text =~ s/[\n\r]/ /g; printf $fh "id:%s account:%s nick:%s type:search topic:%s %s\n", $t->{id}, $username, $t->{from_user}, $topic, $text; @@ -1153,7 +1162,8 @@ sub get_timeline { } foreach my $t ( reverse @$tweets ) { - my $text = decode_entities( $t->{text} ); + my $text = + decode_entities( $t->{retweeted_status}{text} || $t->{text} ); $text =~ s/[\n\r]/ /g; my $reply = "tweet"; if ( Irssi::settings_get_bool("show_reply_context") @@ -1173,7 +1183,9 @@ sub get_timeline { $context = $cache->{ $t->{in_reply_to_status_id} }; if ($context) { - my $ctext = decode_entities( $context->{text} ); + my $ctext = + decode_entities( $context->{retweeted_status}{text} + || $context->{text} ); $ctext =~ s/[\n\r]/ /g; if ( $context->{truncated} and ref($obj) ne 'Net::Identica' ) { $ctext .= @@ -1602,7 +1614,7 @@ sub hilight { if ( Irssi::settings_get_str("twirssi_nick_color") ) { my $c = Irssi::settings_get_str("twirssi_nick_color"); $c = $irssi_to_mirc_colors{$c}; - $text =~ s/(^|\W)\@([-\w]+)/$1\cC$c\@$2\cO/g if $c; + $text =~ s/(^|\W)\@(\w+)/$1\cC$c\@$2\cO/g if $c; } if ( Irssi::settings_get_str("twirssi_topic_color") ) { my $c = Irssi::settings_get_str("twirssi_topic_color");