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)
示例#2
0
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)
示例#3
0
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)
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)
示例#5
0
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']
示例#6
0
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
示例#7
0
def get_client_status():
    client = Client(twitterkeys.consumer_key, twitterkeys.consumer_secret)
    status = client.rate_limit_status()
    print status['resources']['search']['/search/tweets']['remaining']
示例#8
0
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']