0

I am having issues with my code as it was working last week with no issue and I could catch 800 tweets from Planet Fitness. I believe it has to do with my JSON file with my access and consumer keys for the api however I regenerated all keys and the 401 error still occurs. How should I fix this to download the tweets from that user?

Here is my code:

#getting tweets from planet fitness from before 2022 Superbowl Ad
username = "PlanetFitness"
tweets = []
fetchedTweets = api.user_timeline(screen_name = username, count = 200)
tweets.extend(fetchedTweets)
lastTweetInList = tweets[-1].id - 1

while (len(fetchedTweets) > 0):
        fetchedTweets = twitterAPI.user_timeline(screen_name = username, count = 200, max_id = lastTweetInList)
        tweets.extend(fetchedTweets)
        lastTweetInList = tweets[-1].id - 1
        print(f"Catched {len(tweets)} tweets so far.")

Here is the error:

---------------------------------------------------------------------------
Unauthorized                              Traceback (most recent call last)
Input In [8], in <module>
      2 username = "PlanetFitness"
      3 tweets = []
----> 4 fetchedTweets = api.user_timeline(screen_name = username, count = 200)
      5 tweets.extend(fetchedTweets)
      6 lastTweetInList = tweets[-1].id - 1

File /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/tweepy/api.py:33, in pagination.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
     31 @functools.wraps(method)
     32 def wrapper(*args, **kwargs):
---> 33     return method(*args, **kwargs)

File /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/tweepy/api.py:46, in payload.<locals>.decorator.<locals>.wrapper(*args, **kwargs)
     44 kwargs['payload_list'] = payload_list
     45 kwargs['payload_type'] = payload_type
---> 46 return method(*args, **kwargs)

File /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/tweepy/api.py:571, in API.user_timeline(self, **kwargs)
    530 @pagination(mode='id')
    531 @payload('status', list=True)
    532 def user_timeline(self, **kwargs):
    533     """user_timeline(*, user_id, screen_name, since_id, count, max_id, \
    534                      trim_user, exclude_replies, include_rts)
    535 
   (...)
    569     https://developer.twitter.com/en/docs/twitter-api/v1/tweets/timelines/api-reference/get-statuses-user_timeline
    570     """
--> 571     return self.request(
    572         'GET', 'statuses/user_timeline', endpoint_parameters=(
    573             'user_id', 'screen_name', 'since_id', 'count', 'max_id',
    574             'trim_user', 'exclude_replies', 'include_rts'
    575         ), **kwargs
    576     )

File /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/tweepy/api.py:257, in API.request(self, method, endpoint, endpoint_parameters, params, headers, json_payload, parser, payload_list, payload_type, post_data, files, require_auth, return_cursors, upload_api, use_cache, **kwargs)
    255     raise BadRequest(resp)
    256 if resp.status_code == 401:
--> 257     raise Unauthorized(resp)
    258 if resp.status_code == 403:
    259     raise Forbidden(resp)

Unauthorized: 401 Unauthorized
89 - Invalid or expired token.
Kav
  • 1
  • 1
  • Welcome to Stack Overflow. I'm not familiar with this api; but do you need to re-authorize after every so often? – ewokx Jun 01 '22 at 01:26
  • @ewong typically you reauthorize when new permissions are granted. I did regenerate the tokens and reran the code to see if reauthorizing was an issue but the error still occurs. – Kav Jun 01 '22 at 01:49
  • visit https://stackoverflow.com/questions/17636701/twitter-api-reasons-for-invalid-or-expired-token – The Data Guy Aug 19 '22 at 21:24

0 Answers0