Twitter: when printing tweets, making the printing of the ID optional

add a flag to getstatus/getuserstatus that suppresses the printing of the ID
This commit is contained in:
Brian S. Stephan 2012-07-14 09:55:11 -05:00
parent 709a0cfd9a
commit a8fe6da14f
1 changed files with 28 additions and 19 deletions

View File

@ -39,8 +39,8 @@ class Twitter(Module):
Module.__init__(self, irc, config, server) Module.__init__(self, irc, config, server)
# setup regexes # setup regexes
getstatuspattern = "^!twitter\s+getstatus\s+(\S+)$" getstatuspattern = "^!twitter\s+getstatus(\s+noid)?\s+(\S+)$"
getuserstatuspattern = "^!twitter\s+getuserstatus\s+(\S+)(\s+.*|$)" getuserstatuspattern = "^!twitter\s+getuserstatus(\s+noid)?\s+(\S+)(\s+.*|$)"
tweetpattern = "^!twitter\s+tweet\s+(.*)" tweetpattern = "^!twitter\s+tweet\s+(.*)"
gettokenpattern = "^!twitter\s+gettoken$" gettokenpattern = "^!twitter\s+gettoken$"
authpattern = "^!twitter\s+auth\s+(\S+)$" authpattern = "^!twitter\s+auth\s+(\S+)$"
@ -165,10 +165,13 @@ class Twitter(Module):
match = self.getstatusre.search(what) match = self.getstatusre.search(what)
if match: if match:
status = match.group(1) print_id = True
if match.group(1):
print_id = False
status = match.group(2)
try: try:
tweet = self.twit.GetStatus(status) tweet = self.twit.GetStatus(status)
return self._return_tweet_or_retweet_text(tweet=tweet, print_source=True) return self._return_tweet_or_retweet_text(tweet=tweet, print_source=True, print_id=print_id)
except twitter.TwitterError as e: except twitter.TwitterError as e:
return "Couldn't obtain status: " + str(e) return "Couldn't obtain status: " + str(e)
@ -177,8 +180,11 @@ class Twitter(Module):
match = self.getuserstatusre.search(what) match = self.getuserstatusre.search(what)
if match: if match:
user = match.group(1) print_id = True
index = match.group(2) if match.group(1):
print_id = False
user = match.group(2)
index = match.group(3)
try: try:
if index: if index:
@ -197,7 +203,7 @@ class Twitter(Module):
tweets = self.twit.GetUserTimeline(screen_name=user, count=count, include_rts=True) tweets = self.twit.GetUserTimeline(screen_name=user, count=count, include_rts=True)
if tweets: if tweets:
tweet = tweets[-1*index] tweet = tweets[-1*index]
return self._return_tweet_or_retweet_text(tweet=tweet) return self._return_tweet_or_retweet_text(tweet=tweet, print_id=print_id)
except twitter.TwitterError as e: except twitter.TwitterError as e:
return "Couldn't obtain status: " + str(e) return "Couldn't obtain status: " + str(e)
except ValueError as e: except ValueError as e:
@ -351,31 +357,34 @@ class Twitter(Module):
# set since_id # set since_id
self._set_last_since_id(new_since_id) self._set_last_since_id(new_since_id)
def _return_tweet_or_retweet_text(self, tweet, print_source=False): def _return_tweet_or_retweet_text(self, tweet, print_source=False, print_id=True):
""" """
Return a string of the author and text body of a status, Return a string of the author and text body of a status,
accounting for whether or not the fetched status is a accounting for whether or not the fetched status is a
retweet. retweet.
""" """
reply = ""
if tweet.retweeted_status: if tweet.retweeted_status:
retweet = tweet.retweeted_status retweet = tweet.retweeted_status
if print_source: if print_source:
return "@%s (RT @%s): %s [%s]" % (tweet.user.screen_name.encode('utf-8', 'ignore'), reply = "@%s (RT @%s): %s" % (tweet.user.screen_name.encode('utf-8', 'ignore'),
retweet.user.screen_name.encode('utf-8', 'ignore'), retweet.user.screen_name.encode('utf-8', 'ignore'),
super(Twitter, self)._unencode_xml(retweet.text.encode('utf-8', 'ignore')), super(Twitter, self)._unencode_xml(retweet.text.encode('utf-8', 'ignore')))
tweet.id)
else: else:
return "(RT @%s): %s [%s]" % (retweet.user.screen_name.encode('utf-8', 'ignore'), reply = "(RT @%s): %s" % (retweet.user.screen_name.encode('utf-8', 'ignore'),
super(Twitter, self)._unencode_xml(retweet.text.encode('utf-8', 'ignore')), super(Twitter, self)._unencode_xml(retweet.text.encode('utf-8', 'ignore')))
tweet.id)
else: else:
if print_source: if print_source:
return "@%s: %s [%s]" % (tweet.user.screen_name.encode('utf-8', 'ignore'), reply = "@%s: %s" % (tweet.user.screen_name.encode('utf-8', 'ignore'),
super(Twitter, self)._unencode_xml(tweet.text.encode('utf-8', 'ignore')), super(Twitter, self)._unencode_xml(tweet.text.encode('utf-8', 'ignore')))
tweet.id)
else: else:
return "%s [%s]" % (super(Twitter, self)._unencode_xml(tweet.text.encode('utf-8', 'ignore')), tweet.id) reply = "%s" % (super(Twitter, self)._unencode_xml(tweet.text.encode('utf-8', 'ignore')))
if print_id:
reply = reply + " [{0:d}]".format(tweet.id)
return reply
def _get_last_since_id(self): def _get_last_since_id(self):
"""Get the since_id out of the database.""" """Get the since_id out of the database."""