class ClientTestCase(unittest.TestCase): """Test case for the client methods.""" def setUp(self): self.patcher = patch('application_only_auth.client.urlopen', fake_urlopen) self.patcher.start() self.client = Client('xxxxxx', 'xxxxxx') def tearDown(self): self.patcher.stop() def test_rate_limit(self): """Test rate limit response.""" status = self.client.rate_limit_status() resource_status = status['resources']['search']['/search/tweets'] expected_status = {'remaining': 450, 'limit': 450, 'reset': 1380131036} self.assertEqual(resource_status, expected_status) def test_rate_limit_with_resource(self): """Test rate limit response using a resource as parameter.""" response = self.client.rate_limit_status('/search/tweets') expected = {'remaining': 450, 'limit': 450, 'reset': 1380131036} self.assertEqual(response, expected) def test_show_status(self): """Test status show response.""" resource_url = 'https://api.twitter.com/1.1' \ '/statuses/show.json?id=316683059296624640' tweet = self.client.request(resource_url) self.assertEqual(tweet['id_str'], "316683059296624640") def test_invalid_resource(self): """Test status show response.""" resource_url = 'https://api.twitter.com/1.1/resource/invalid.json' self.assertRaises(ClientException, self.client.request, resource_url)
def gettweetsfromapi( messageBody ): CONSUMER_KEY = getconsumerkey() CONSUMER_SECRET = getconsumersecret() client = Client(CONSUMER_KEY, CONSUMER_SECRET) hashtag = gethashtag(messageBody); tweet = client.request('https://api.twitter.com/1.1/search/tweets.json?q=' + hashtag + '&count=5&lang=en') status = client.rate_limit_status() print status['resources']['search'] return formattweet(tweet)
def gettweetsfromapi(messageBody): CONSUMER_KEY = getconsumerkey() CONSUMER_SECRET = getconsumersecret() client = Client(CONSUMER_KEY, CONSUMER_SECRET) hashtag = gethashtag(messageBody) tweet = client.request( 'https://api.twitter.com/1.1/search/tweets.json?q=' + hashtag + '&count=5&lang=en') status = client.rate_limit_status() print status['resources']['search'] return formattweet(tweet)
import json from application_only_auth import Client # The consumer secret is an example and will not work for real requests # To register an app visit https://dev.twitter.com/apps/new CONSUMER_KEY = 'QgnRAOglaJ6I0ulrIgP3R1mrt' CONSUMER_SECRET = 'JrsmPHBodqeN8R9jbtyZEVbwGFMtWRBToLTjyCca2M33Rg5MYX' client = Client(CONSUMER_KEY, CONSUMER_SECRET) # Pretty print of tweet payload tweet = client.request(url='https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=200') # print json.dumps(tweet, sort_keys=True, indent=4, separators=(',', ':')) # Show rate limit status for this application status = client.rate_limit_status() print status['resources']['statuses']['/statuses/user_timeline']
class TweetFetcher(object): """docstring for TweetFetcher""" twitter_client = None tweet_max_id = None def __init__(self): super(TweetFetcher, self).__init__() # self.arg = arg self.twitter_client = Client(twitterkeys.consumer_key, twitterkeys.consumer_secret) self.twitter_client._get_access_token() def get_client_status(self): status = self.twitter_client.rate_limit_status() return status['resources']['search']['/search/tweets']['remaining'] def get_tweets_with_tag_and_max_id(self, search_tag, max_id): query = search_tag query += "%20lang%3Aen" query += "&result_type=" + "mixed" # result_type if max_id is not None: query += "&max_id=" + str(max_id) query += "&count=" + str(MAX_TWEET_COUNT) request_start = datetime.datetime.now() # request timing response_json = self.twitter_client.request(twitter_api_url + query_tweets_url + query) DLOG("Request time: " + str(datetime.datetime.now() - request_start)) # request timing response_dict = json.loads(json.dumps(response_json, sort_keys=True)) statuses = response_dict['statuses'] tweets = [] for status in statuses: tweet = Tweet(status) tweets.append(tweet) if len(tweets) > 0: new_max_id = tweets[-1].id return (tweets, new_max_id) else: return (tweets, 0) def get_timeline(self, search_tag, length): max_id = None new_max_id = None loop_counter = 0 timeline = [] # Iterate over timeline while (loop_counter == 0) | (max_id != new_max_id): loop_counter += 1 max_id = new_max_id - 1 if new_max_id is not None else None (new_tweets, new_max_id) = get_tweets_with_tag_and_max_id(search_tag, max_id) timeline.extend(new_tweets) # print str(max_id) + ", " + str(new_max_id) if len(timeline) >= length or new_max_id == 0: break return timeline def get_tweets(self, search_tag): query = search_tag query += "%20lang%3Aen" query += "&result_type=" + "mixed" # result_type if self.tweet_max_id is not None: query += "&max_id=" + str(self.tweet_max_id) query += "&count=" + str(MAX_TWEET_COUNT) request_start = datetime.datetime.now() # request timing response_json = self.twitter_client.request(twitter_api_url + query_tweets_url + query) DLOG("Request time: " + str(datetime.datetime.now() - request_start)) # request timing response_dict = json.loads(json.dumps(response_json, sort_keys=True)) statuses = response_dict['statuses'] # search_metadata = response_dict['search_metadata'] tweets = [] for status in statuses: tweet = Tweet(status) tweets.append(tweet) if len(tweets) > 0: self.tweet_max_id = tweets[-1].id return tweets # return tweets, search_metadata else: self.tweet_max_id = None return tweets def stop_fetching(self): self.tweet_max_id = None
def get_client_status(): client = Client(twitterkeys.consumer_key, twitterkeys.consumer_secret) status = client.rate_limit_status() print status['resources']['search']['/search/tweets']['remaining']
import json from application_only_auth import Client # The consumer secret is an example and will not work for real requests # To register an app visit https://dev.twitter.com/apps/new CONSUMER_KEY = 'QgnRAOglaJ6I0ulrIgP3R1mrt' CONSUMER_SECRET = 'JrsmPHBodqeN8R9jbtyZEVbwGFMtWRBToLTjyCca2M33Rg5MYX' client = Client(CONSUMER_KEY, CONSUMER_SECRET) # Pretty print of tweet payload tweet = client.request( url= 'https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=twitterapi&count=200' ) # print json.dumps(tweet, sort_keys=True, indent=4, separators=(',', ':')) # Show rate limit status for this application status = client.rate_limit_status() print status['resources']['statuses']['/statuses/user_timeline']