twitter: handle twitter API errors better
i think i need to make this client (re)connect on demand or something, though, i'm getting a lot of timeouts
This commit is contained in:
parent
6bf2732d7f
commit
bf0445149b
|
@ -6,6 +6,7 @@ import logging
|
|||
import thread
|
||||
import time
|
||||
|
||||
import requests
|
||||
import twython
|
||||
|
||||
from django.conf import settings
|
||||
|
@ -25,7 +26,9 @@ class Twitter(Plugin):
|
|||
"""Initialize some stuff."""
|
||||
|
||||
self.authed = False
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit_args = {'timeout': 30.0}
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
self.temp_token = None
|
||||
self.temp_token_secret = None
|
||||
|
||||
|
@ -54,14 +57,17 @@ class Twitter(Plugin):
|
|||
twittersettings = TwitterClient.objects.get(pk=1)
|
||||
if twittersettings.oauth_token != '' and twittersettings.oauth_token_secret != '':
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
twittersettings.oauth_token, twittersettings.oauth_token_secret)
|
||||
twittersettings.oauth_token, twittersettings.oauth_token_secret,
|
||||
client_args=self.twit_args)
|
||||
if self.twit.verify_credentials():
|
||||
self.authed = True
|
||||
log.debug("Logged in to Twitter with saved token.")
|
||||
else:
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
else:
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
except TwitterClient.DoesNotExist:
|
||||
log.error("twitter settings module does not exist")
|
||||
|
||||
|
@ -127,6 +133,8 @@ class Twitter(Plugin):
|
|||
tweet = tweets[-1*index]
|
||||
return self._return_tweet_or_retweet_text(event, tweet=tweet, print_source=print_source,
|
||||
print_id=print_id)
|
||||
except requests.exceptions.SSLError as ssle:
|
||||
return self.bot.reply(event, "Couldn't obtain status: {0:s}, you can maybe try again".format(ssle))
|
||||
except twython.exceptions.TwythonError as e:
|
||||
return self.bot.reply(event, "Couldn't obtain status: {0:s}".format(e))
|
||||
except ValueError as e:
|
||||
|
@ -178,10 +186,12 @@ class Twitter(Plugin):
|
|||
try:
|
||||
if not self.twit.verify_credentials():
|
||||
self.authed = False
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
except twython.TwythonError:
|
||||
self.authed = False
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
|
||||
auth = self.twit.get_authentication_tokens()
|
||||
self.temp_token = auth['oauth_token']
|
||||
|
@ -194,11 +204,13 @@ class Twitter(Plugin):
|
|||
|
||||
oauth_verifier = match.group(1)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
self.temp_token, self.temp_token_secret)
|
||||
self.temp_token, self.temp_token_secret,
|
||||
client_args=self.twit_args)
|
||||
final_step = self.twit.get_authorized_tokens(oauth_verifier)
|
||||
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
final_step['oauth_token'], final_step['oauth_token_secret'])
|
||||
final_step['oauth_token'], final_step['oauth_token_secret'],
|
||||
client_args=self.twit_args)
|
||||
|
||||
try:
|
||||
twittersettings = TwitterClient.objects.get(pk=1)
|
||||
|
@ -212,7 +224,8 @@ class Twitter(Plugin):
|
|||
# print timeline stuff. this will set up the appropriate timer
|
||||
return self.bot.reply(event, "The bot is now logged in.")
|
||||
else:
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET)
|
||||
self.twit = twython.Twython(settings.TWITTER_CONSUMER_KEY, settings.TWITTER_CONSUMER_SECRET,
|
||||
client_args=self.twit_args)
|
||||
return self.bot.reply(event, "The bot was not able to authenticate.")
|
||||
except TwitterClient.DoesNotExist:
|
||||
log.error("twitter settings object does not exist")
|
||||
|
|
Loading…
Reference in New Issue