]> git.sommitrealweird.co.uk Git - twirssi-net-twitter-lite.git/blobdiff - twirssi.pl
r616 - reduce polling for friends update, by default once every 10 minutes
[twirssi-net-twitter-lite.git] / twirssi.pl
index 6e0101818dc252c0f27a6c09f5084d85e9735635..0d2a1b2819711e4ef7fcf5659fffc6aa4afedb8e 100644 (file)
@@ -10,8 +10,8 @@ $Data::Dumper::Indent = 1;
 
 use vars qw($VERSION %IRSSI);
 
 
 use vars qw($VERSION %IRSSI);
 
-$VERSION = "2.2.1";
-my ($REV) = '$Rev: 611 $' =~ /(\d+)/;
+$VERSION = "2.2.3beta";
+my ($REV) = '$Rev: 616 $' =~ /(\d+)/;
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
 %IRSSI = (
     authors     => 'Dan Boger',
     contact     => 'zigdon@gmail.com',
@@ -20,7 +20,7 @@ my ($REV) = '$Rev: 611 $' =~ /(\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-04-10 23:47:19 -0700 (Fri, 10 Apr 2009) $',
+    changed => '$Date: 2009-04-21 12:20:40 -0700 (Tue, 21 Apr 2009) $',
 );
 
 my $window;
 );
 
 my $window;
@@ -30,6 +30,7 @@ my $user;
 my $defservice;
 my $poll;
 my $last_poll;
 my $defservice;
 my $poll;
 my $last_poll;
+my $last_friends_poll = time;
 my %nicks;
 my %friends;
 my %tweet_cache;
 my %nicks;
 my %friends;
 my %tweet_cache;
@@ -552,12 +553,12 @@ sub cmd_add_search {
         return;
     }
 
         return;
     }
 
-    if ( exists $id_map{__searches}{$user}{$data} ) {
+    if ( exists $id_map{__searches}{"$user\@$defservice"}{$data} ) {
         &notice("Already had a subscription for '$data'");
         return;
     }
 
         &notice("Already had a subscription for '$data'");
         return;
     }
 
-    $id_map{__searches}{$user}{$data} = 1;
+    $id_map{__searches}{"$user\@$defservice"}{$data} = 1;
     &notice("Added subscription for '$data'");
 }
 
     &notice("Added subscription for '$data'");
 }
 
@@ -577,12 +578,12 @@ sub cmd_del_search {
         return;
     }
 
         return;
     }
 
-    unless ( exists $id_map{__searches}{$user}{$data} ) {
+    unless ( exists $id_map{__searches}{"$user\@$defservice"}{$data} ) {
         &notice("No subscription found for '$data'");
         return;
     }
 
         &notice("No subscription found for '$data'");
         return;
     }
 
-    delete $id_map{__searches}{$user}{$data};
+    delete $id_map{__searches}{"$user\@$defservice"}{$data};
     &notice("Removed subscription for '$data'");
 }
 
     &notice("Removed subscription for '$data'");
 }
 
@@ -770,14 +771,22 @@ sub get_updates {
             $error++ unless &do_updates( $fh, $_, $twits{$_}, \%context_cache );
         }
 
             $error++ unless &do_updates( $fh, $_, $twits{$_}, \%context_cache );
         }
 
-        my ( $added, $removed ) = &load_friends($fh);
-        if ( $added + $removed ) {
-            print $fh "type:debug %R***%n Friends list updated: ",
-              join( ", ",
-                sprintf( "%d added",   $added ),
-                sprintf( "%d removed", $removed ) ),
-              "\n";
+        if (
+            time - $last_friends_poll >
+            Irssi::settings_get_int('twitter_friends_poll') )
+        {
+            my ( $added, $removed ) = &load_friends($fh);
+            if ( $added + $removed ) {
+                print $fh "type:debug %R***%n Friends list updated: ",
+                  join( ", ",
+                    sprintf( "%d added",   $added ),
+                    sprintf( "%d removed", $removed ) ),
+                  "\n";
+            }
+
+            $last_friends_poll = time;
         }
         }
+
         print $fh "__friends__\n";
         foreach ( sort keys %friends ) {
             print $fh "$_ $friends{$_}\n";
         print $fh "__friends__\n";
         foreach ( sort keys %friends ) {
             print $fh "$_ $friends{$_}\n";
@@ -1310,6 +1319,13 @@ sub sig_complete {
           keys %{ $id_map{__indexes} };
     }
 
           keys %{ $id_map{__indexes} };
     }
 
+    if ( $linestart =~ /^\/twitter_unfriend\s*$/ )
+    {    # /twitter_unfriend gets a nick
+        $word =~ s/^@//;
+        push @$complist, grep /^\Q$word/i,
+          sort { $nicks{$b} <=> $nicks{$a} } keys %nicks;
+    }
+
     # /tweet, /tweet_as, /dm, /dm_as - complete @nicks (and nicks as the first
     # arg to dm)
     if ( $linestart =~ /^\/(?:tweet|dm)/ ) {
     # /tweet, /tweet_as, /dm, /dm_as - complete @nicks (and nicks as the first
     # arg to dm)
     if ( $linestart =~ /^\/(?:tweet|dm)/ ) {
@@ -1454,6 +1470,9 @@ Irssi::settings_add_str( "twirssi", "twirssi_location",
     ".irssi/scripts/twirssi.pl" );
 Irssi::settings_add_str( "twirssi", "twirssi_replies_store",
     ".irssi/scripts/twirssi.json" );
     ".irssi/scripts/twirssi.pl" );
 Irssi::settings_add_str( "twirssi", "twirssi_replies_store",
     ".irssi/scripts/twirssi.json" );
+
+Irssi::settings_add_int( "twirssi", "twitter_friends_poll", 600 );
+
 Irssi::settings_add_bool( "twirssi", "twirssi_upgrade_beta",      0 );
 Irssi::settings_add_bool( "twirssi", "tweet_to_away",             0 );
 Irssi::settings_add_bool( "twirssi", "show_reply_context",        0 );
 Irssi::settings_add_bool( "twirssi", "twirssi_upgrade_beta",      0 );
 Irssi::settings_add_bool( "twirssi", "tweet_to_away",             0 );
 Irssi::settings_add_bool( "twirssi", "show_reply_context",        0 );