diff options
Diffstat (limited to 'twitterclient.py')
| -rw-r--r-- | twitterclient.py | 132 |
1 files changed, 66 insertions, 66 deletions
diff --git a/twitterclient.py b/twitterclient.py index f303c17..0b367c0 100644 --- a/twitterclient.py +++ b/twitterclient.py @@ -10,76 +10,76 @@ Copyright (C) 2009-2019 PostgreSQL Global Development Group import requests_oauthlib class TwitterClient(object): - """ - Base class representing a twitter client, implementing all those twitter - API calls that are in use. - Does not attempt to be a complete twitter client, just to fill the needs - for the planet software. - """ + """ + Base class representing a twitter client, implementing all those twitter + API calls that are in use. + Does not attempt to be a complete twitter client, just to fill the needs + for the planet software. + """ - def __init__(self, cfg): - """ - Initialize the instance. The parameter cfg is a ConfigParser object - that has loaded the planet.ini file. - """ - self.twittername = cfg.get('twitter', 'account') - self.twitterlist = cfg.get('twitter', 'listname') + def __init__(self, cfg): + """ + Initialize the instance. The parameter cfg is a ConfigParser object + that has loaded the planet.ini file. + """ + self.twittername = cfg.get('twitter', 'account') + self.twitterlist = cfg.get('twitter', 'listname') - self.tw = requests_oauthlib.OAuth1Session(cfg.get('twitter', 'consumer'), - cfg.get('twitter', 'consumersecret'), - cfg.get('twitter', 'token'), - cfg.get('twitter', 'secret')) + self.tw = requests_oauthlib.OAuth1Session(cfg.get('twitter', 'consumer'), + cfg.get('twitter', 'consumersecret'), + cfg.get('twitter', 'token'), + cfg.get('twitter', 'secret')) - self.twitter_api = 'https://api.twitter.com/1.1/' + self.twitter_api = 'https://api.twitter.com/1.1/' - def list_subscribers(self): - # Eek. It seems subscribers are paged even if we don't ask for it - # Thus, we need to loop with multiple requests - cursor=-1 - handles = [] - while cursor != 0: - response = self.tw.get('{0}lists/members.json'.format(self.twitter_api), params={ - 'owner_screen_name': self.twittername, - 'slug': self.twitterlist, - 'cursor': cursor, - }) - if response.status_code != 200: - print(response.json()) - raise Exception("Received status {0} when listing users".format(response.status_code)) - j = response.json() - handles.extend([x['screen_name'].lower() for x in j['users']]) - cursor = j['next_cursor'] + def list_subscribers(self): + # Eek. It seems subscribers are paged even if we don't ask for it + # Thus, we need to loop with multiple requests + cursor=-1 + handles = [] + while cursor != 0: + response = self.tw.get('{0}lists/members.json'.format(self.twitter_api), params={ + 'owner_screen_name': self.twittername, + 'slug': self.twitterlist, + 'cursor': cursor, + }) + if response.status_code != 200: + print(response.json()) + raise Exception("Received status {0} when listing users".format(response.status_code)) + j = response.json() + handles.extend([x['screen_name'].lower() for x in j['users']]) + cursor = j['next_cursor'] - return handles + return handles - def remove_subscriber(self, name): - print("Removing twitter user %s from list." % name) - r = self.tw.post('{0}lists/members/destroy.json'.format(self.twitter_api), data={ - 'owner_screen_name': self.twittername, - 'slug': self.twitterlist, - 'screen_name': name, - }) - if r.status_code != 200: - try: - err = r.json()['errors'][0]['message'] - except: - err = 'Response does not contain error messages with json' - print("Failed to remove subscriber {0}: {1}".format(name, err)) - return False - return True + def remove_subscriber(self, name): + print("Removing twitter user %s from list." % name) + r = self.tw.post('{0}lists/members/destroy.json'.format(self.twitter_api), data={ + 'owner_screen_name': self.twittername, + 'slug': self.twitterlist, + 'screen_name': name, + }) + if r.status_code != 200: + try: + err = r.json()['errors'][0]['message'] + except: + err = 'Response does not contain error messages with json' + print("Failed to remove subscriber {0}: {1}".format(name, err)) + return False + return True - def add_subscriber(self, name): - print("Adding twitter user %s to list." % name) - r = self.tw.post('{0}lists/members/create.json'.format(self.twitter_api), data={ - 'owner_screen_name': self.twittername, - 'slug': self.twitterlist, - 'screen_name': name, - }) - if r.status_code != 200: - try: - err = r.json()['errors'][0]['message'] - except: - err = 'Response does not contain error messages with json' - print("Failed to add subscriber {0}: {1}".format(name, err)) - return False - return True + def add_subscriber(self, name): + print("Adding twitter user %s to list." % name) + r = self.tw.post('{0}lists/members/create.json'.format(self.twitter_api), data={ + 'owner_screen_name': self.twittername, + 'slug': self.twitterlist, + 'screen_name': name, + }) + if r.status_code != 200: + try: + err = r.json()['errors'][0]['message'] + except: + err = 'Response does not contain error messages with json' + print("Failed to add subscriber {0}: {1}".format(name, err)) + return False + return True |
