]> git.sommitrealweird.co.uk Git - twirssi-net-twitter-lite.git/blobdiff - twirssi.pl
r521 - URLs for truncated tweets are now working
[twirssi-net-twitter-lite.git] / twirssi.pl
index 8c9335f292abfb23179509383a44dca8aff46fbf..0d4c1e5d58ba28d07cca6abe6be5ade757f824de 100644 (file)
@@ -11,8 +11,8 @@ $Data::Dumper::Indent = 1;
 
 use vars qw($VERSION %IRSSI);
 
 
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "2.1.1beta";
-my ($REV) = '$Rev: 493 $' =~ /(\d+)/;
+$VERSION = "2.1.2beta";
+my ($REV) = '$Rev: 521 $' =~ /(\d+)/;
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
@@ -21,7 +21,7 @@ my ($REV) = '$Rev: 493 $' =~ /(\d+)/;
       . 'Can optionally set your bitlbee /away message to same',
     license => 'GNU GPL v2',
     url     => 'http://twirssi.com',
       . 'Can optionally set your bitlbee /away message to same',
     license => 'GNU GPL v2',
     url     => 'http://twirssi.com',
-    changed => '$Date: 2009-02-25 14:44:03 -0800 (Wed, 25 Feb 2009) $',
+    changed => '$Date: 2009-03-07 13:50:54 -0800 (Sat, 07 Mar 2009) $',
 );
 
 my $window;
 );
 
 my $window;
@@ -737,6 +737,12 @@ sub do_updates {
                 printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
                   $context->{id}, $username,
                   $context->{user}{screen_name}, $ctext;
                 printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
                   $context->{id}, $username,
                   $context->{user}{screen_name}, $ctext;
+                if ($context->{truncated}) {
+                    printf $fh "id:%s account:%s nick:%s type:ellispis %s\n",
+                      $context->{id}."-url", $username,
+                      $context->{user}{screen_name}, 
+                      "http://twitter.com/$context->{user}{screen_name}/status/$context->{id}";
+                }
                 $reply = "reply";
             } elsif ($@) {
                 print $fh "type:debug request to get context failed: $@";
                 $reply = "reply";
             } elsif ($@) {
                 print $fh "type:debug request to get context failed: $@";
@@ -751,6 +757,12 @@ sub do_updates {
               and not Irssi::settings_get_bool("show_own_tweets");
         printf $fh "id:%d account:%s nick:%s type:%s %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $reply, $text;
               and not Irssi::settings_get_bool("show_own_tweets");
         printf $fh "id:%d account:%s nick:%s type:%s %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $reply, $text;
+        if ($t->{truncated}) {
+            printf $fh "id:%s account:%s nick:%s type:ellispis %s\n",
+              $t->{id}."-url", $username,
+              $t->{user}{screen_name}, 
+              "http://twitter.com/$t->{user}{screen_name}/status/$t->{id}";
+        }
     }
 
     print scalar localtime, " - Polling for replies" if &debug;
     }
 
     print scalar localtime, " - Polling for replies" if &debug;
@@ -772,6 +784,12 @@ sub do_updates {
         $text = &hilight($text);
         printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $text;
         $text = &hilight($text);
         printf $fh "id:%d account:%s nick:%s type:tweet %s\n",
           $t->{id}, $username, $t->{user}{screen_name}, $text;
+        if ($t->{truncated}) {
+            printf $fh "id:%s account:%s nick:%s type:ellispis %s\n",
+              $t->{id}."-url", $username,
+              $t->{user}{screen_name}, 
+              "http://twitter.com/$t->{user}{screen_name}/status/$t->{id}";
+        }
     }
 
     print scalar localtime, " - Polling for DMs" if &debug;
     }
 
     print scalar localtime, " - Polling for DMs" if &debug;
@@ -911,6 +929,12 @@ sub monitor_child {
                     ( MSGLEVEL_PUBLIC | $hilight ),
                     $meta{type}, $account, $meta{nick}, $marker, $_
                   ];
                     ( MSGLEVEL_PUBLIC | $hilight ),
                     $meta{type}, $account, $meta{nick}, $marker, $_
                   ];
+            } elsif ( $meta{type} eq 'ellispis' ) {
+                push @lines,
+                  [
+                    MSGLEVEL_PUBLIC,
+                    "tweet", $account, $meta{nick}, "", $_
+                  ];
             } elsif ( $meta{type} eq 'search' ) {
                 push @lines,
                   [
             } elsif ( $meta{type} eq 'search' ) {
                 push @lines,
                   [
@@ -1002,7 +1026,7 @@ sub monitor_child {
                     print JSON JSON::Any->objToJson( \%id_map );
                     close JSON;
                 } else {
                     print JSON JSON::Any->objToJson( \%id_map );
                     close JSON;
                 } else {
-                    &notice("Failed to write replies to $file: $!");
+                    &ccrap("Failed to write replies to $file: $!");
                 }
             }
             $failwhale = 0;
                 }
             }
             $failwhale = 0;
@@ -1041,11 +1065,11 @@ sub monitor_child {
                 q{         '--/_.'----'`}
               )
             {
                 q{         '--/_.'----'`}
               )
             {
-                &notice($whale);
+                &ccrap($whale);
             }
             $failwhale = 1;
         }
             }
             $failwhale = 1;
         }
-        &notice("Haven't been able to get updated tweets since $since");
+        &ccrap("Haven't been able to get updated tweets since $since");
     }
 }
 
     }
 }
 
@@ -1057,6 +1081,10 @@ sub notice {
     $window->print( "%R***%n @_", MSGLEVEL_PUBLIC );
 }
 
     $window->print( "%R***%n @_", MSGLEVEL_PUBLIC );
 }
 
+sub ccrap {
+    $window->print( "%R***%n @_", MSGLEVEL_CLIENTCRAP );
+}
+
 sub update_away {
     my $data = shift;
 
 sub update_away {
     my $data = shift;
 
@@ -1070,7 +1098,7 @@ sub update_away {
             $server->send_raw("away :$data");
             return 1;
         } else {
             $server->send_raw("away :$data");
             return 1;
         } else {
-            &notice( "Can't find bitlbee server.",
+            &ccrap( "Can't find bitlbee server.",
                 "Update bitlbee_server or disable tweet_to_away" );
             return 0;
         }
                 "Update bitlbee_server or disable tweet_to_away" );
             return 0;
         }
@@ -1123,8 +1151,10 @@ sub sig_complete {
       )
     {    # /twitter_reply gets a nick:num
         $word =~ s/^@//;
       )
     {    # /twitter_reply gets a nick:num
         $word =~ s/^@//;
-        @$complist = map { "$_:$id_map{__indexes}{$_}" } grep /^\Q$word/i,
-          sort keys %{ $id_map{__indexes} };
+        @$complist = map { "$_:$id_map{__indexes}{$_}" } 
+          sort {$nicks{$b} <=> $nicks{$a}}
+          grep /^\Q$word/i,
+          keys %{ $id_map{__indexes} };
     }
 
     # /tweet, /tweet_as, /dm, /dm_as - complete @nicks (and nicks as the first
     }
 
     # /tweet, /tweet_as, /dm, /dm_as - complete @nicks (and nicks as the first
@@ -1215,6 +1245,10 @@ Irssi::settings_add_bool( "twirssi", "tweet_window_input",        0 );
 $last_poll = time - &get_poll_time;
 $window = Irssi::window_find_name( Irssi::settings_get_str('twitter_window') );
 if ( !$window ) {
 $last_poll = time - &get_poll_time;
 $window = Irssi::window_find_name( Irssi::settings_get_str('twitter_window') );
 if ( !$window ) {
+    Irssi::active_win()
+      ->print( "Couldn't find a window named '"
+          . Irssi::settings_get_str('twitter_window')
+          . "', trying to create it." );
     $window =
       Irssi::Windowitem::window_create(
         Irssi::settings_get_str('twitter_window'), 1 );
     $window =
       Irssi::Windowitem::window_create(
         Irssi::settings_get_str('twitter_window'), 1 );