summaryrefslogtreecommitdiff
path: root/twitterclient.py
diff options
context:
space:
mode:
Diffstat (limited to 'twitterclient.py')
-rw-r--r--twitterclient.py132
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