class TwitterSingleton(metaclass=Singleton): twitter = None def __init__(self): if settings.DEBUG: self.twitter = TwitterDebugLogger() else: self.twitter = Twython(settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.OAUTH_TOKEN, settings.OAUTH_TOKEN_SECRET) def status_update_hooks(self): pass def tweet(self, status, *args, **kwargs): try: self.twitter.update_status(status=status, *args, **kwargs) self.status_update_hooks() except TwythonError as e: log("Twython error, tweeting: {0}".format(e)) def reply_to(self, tweet_data, status, *args, **kwargs): status = '@{0} {1}'.format(tweet_data['user']['screen_name'], status) self.tweet(status=status, in_reply_to_status_id=tweet_data['id_str'], *args, **kwargs) def update_status_with_media(self, status, media, in_reply_to_status_id): ''' :param status: :param media: is simply the un-uploaded media :param in_reply_to: :return: ''' try: log('blah blaaeouaoeuh') response = self.twitter.upload_media(media=media) log('blah blah') self.twitter.update_status( status=status, media_ids=[response['media_id']], in_reply_to_status_id=in_reply_to_status_id) self.status_update_hooks() except TwythonError as e: log("Twython error, updating status with media: {0}".format(e)) def send_direct_message(self, text, user_id=None, screen_name=None): if user_id: self.twitter.send_direct_message(text=text, user_id=user_id) elif screen_name: self.twitter.send_direct_message(text=text, screen_name=screen_name)
class TwitterSingleton(metaclass=Singleton): twitter = None def __init__(self): if settings.DEBUG: self.twitter = TwitterDebugLogger() else: self.twitter = Twython( settings.CONSUMER_KEY, settings.CONSUMER_SECRET, settings.OAUTH_TOKEN, settings.OAUTH_TOKEN_SECRET ) def status_update_hooks(self): pass def tweet(self, status, *args, **kwargs): try: self.twitter.update_status(status=status, *args, **kwargs) self.status_update_hooks() except TwythonError as e: log("Twython error, tweeting: {0}".format(e)) def reply_to(self, tweet_data, status, *args, **kwargs): status = '@{0} {1}'.format(tweet_data['user']['screen_name'], status) self.tweet(status=status, in_reply_to_status_id=tweet_data['id_str'], *args, **kwargs) def update_status_with_media(self, status, media, in_reply_to_status_id): ''' :param status: :param media: is simply the un-uploaded media :param in_reply_to: :return: ''' try: log('blah blaaeouaoeuh') response = self.twitter.upload_media(media=media) log('blah blah') self.twitter.update_status(status=status, media_ids=[response['media_id']], in_reply_to_status_id=in_reply_to_status_id) self.status_update_hooks() except TwythonError as e: log("Twython error, updating status with media: {0}".format(e)) def send_direct_message(self, text, user_id=None, screen_name=None): if user_id: self.twitter.send_direct_message(text=text, user_id=user_id) elif screen_name: self.twitter.send_direct_message(text=text, screen_name=screen_name)