Handle Twitter multiple matches; fixes MB#10667
[hermes] / package / src / org / maemo / hermes / engine / twitter / service.py
index 9042076..58d76a0 100644 (file)
@@ -1,4 +1,5 @@
 from org.maemo.hermes.engine.names import canonical
+from org.maemo.hermes.engine.friend import Friend
 import org.maemo.hermes.engine.service
 
 class Service(org.maemo.hermes.engine.service.Service):
@@ -32,10 +33,12 @@ class Service(org.maemo.hermes.engine.service.Service):
 
     # -----------------------------------------------------------------------
     def process_friends(self):
-        for tweeter in self._get_tweeters():
+        tweeters = self._get_tweeters()
+        #print "got ", len(tweeters), " tweeters from twitter"
+        for tweeter in tweeters:
             key = canonical(tweeter.name)
             url = 'http://twitter.com/%s' % (tweeter.screen_name)
-            friend = self._create_friend(tweeter.name)
+            friend = Friend(tweeter.name)
             friend.set_nickname(tweeter.screen_name)
             friend.add_url(url)
             friend.add_url(tweeter.url)
@@ -75,7 +78,15 @@ class Service(org.maemo.hermes.engine.service.Service):
 
     # -----------------------------------------------------------------------
     def _get_tweeters(self):
-        return self._twitter.GetFriends()
+        try:
+            return self._twitter.GetFriends()
+        except urllib2.HTTPError, e:
+            if e.code >= 500 and e.code <= 599:
+                print "Twitter down (fail whale): " + e.message
+                return []
+            else:
+                raise e
+        
     
     
     # -----------------------------------------------------------------------
@@ -106,5 +117,6 @@ class Service(org.maemo.hermes.engine.service.Service):
     def _register_match(self, contact, friend):
         friend.set_contact(contact)
         self._friends_by_contact[contact] = friend
-        self._friends.remove(friend)
+        if friend in self._friends:
+            self._friends.remove(friend)