diff --git a/mitterlib/network/networkbase.py b/mitterlib/network/networkbase.py index 5cf0783..806e50e 100644 --- a/mitterlib/network/networkbase.py +++ b/mitterlib/network/networkbase.py @@ -129,6 +129,14 @@ class NetworkData(object): **parent** The parent of this message, in case of a reply. + + **reposted_by** + Username friend of the current user that reposted that message. Some + networks will return the original user in a separate table (Twitter, + in this case, returns the original message with the original user + in a "retweeted_status" structure.) In this case, the network layer + will must return the original user in *name*, *username* and *avatar*, + while the friend username will be moved to *reposted_by*. **network** The network id source of the message. Network classes don't need to @@ -143,6 +151,7 @@ class NetworkData(object): self.message = '' self.message_time = None self.parent = '' + self.reposted_by = '' self.network = '' diff --git a/mitterlib/network/twitter.py b/mitterlib/network/twitter.py index 3077cd8..6245b83 100644 --- a/mitterlib/network/twitter.py +++ b/mitterlib/network/twitter.py @@ -119,6 +119,14 @@ class TwitterNetworkData(NetworkData): if 'in_reply_to_status_id' in data and data['in_reply_to_status_id']: self.parent = int(data['in_reply_to_status_id']) + + if 'retweeted_status' in data: + self.reposted_by = self.username + + retweet_user = data['retweeted_status']['user'] + self.name = retweet_user['name'] + self.username = retweet_user['screen_name'] + self.avatar = retweet_user['profile_image_url'] # Twitter encodes a lot of HTML entities, which are not good when # you want to *display* then (e.g., "<" returns to us as "<"). @@ -267,12 +275,12 @@ class Connection(NetworkBase): options.add_option( group=self.NAMESPACE, option='server_url', - default='http://twitter.com', + default='http://api.twitter.com/1', is_cmd_option=False) options.add_option( group=self.NAMESPACE, option='secure_server_url', - default='https://twitter.com', + default='https://api.twitter.com/1', is_cmd_option=False) auth_options(self.NAMESPACE, options, self.AUTH) return @@ -332,7 +340,7 @@ class Connection(NetworkBase): def messages(self): """Return a list of NetworkData objects for the main "timeline".""" - return self._timeline('last_tweet', '/statuses/friends_timeline.json') + return self._timeline('last_tweet', '/statuses/home_timeline.json') def message(self, message_id): """Retrieves the information of one message."""