проблема с show_status (id = ...) с Twython, хотя у меня есть запросы, оставленные во временном окне - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь загрузить твиты, используя их идентификатор и библиотеку Twython. Я настроил приложение для твиттера. По какой-то причине я могу отправить только 6 запросов, прежде чем получит ошибку, хотя я вижу, что для функции show_statuses у меня есть 900 запросов в 15-минутное окно.

Вот некоторые результаты успешной отправки запроса, я удалил текст твита для конфиденциальности и заменил на ____

{'limit': 900, 'remaining': 854, 'reset': 1537123863}
____
id          551659627872415744
category                racism

Когда я удаляю попытку, за исключением того, что я получаю эту ошибку

Traceback (most recent call last):
  File "grabtweets.py", line 51, in <module>
    df['tweet'] = df.apply(getTweet,axis=1)
  File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 4877, in apply
    ignore_failures=ignore_failures)
  File "/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 4973, in _apply_standard
    results[i] = func(v)
  File "grabtweets.py", line 35, in getTweet
    tweet = twitter.show_status(id=int(row['id']))
  File "/anaconda3/lib/python3.6/site-packages/twython/endpoints.py", line 94, in show_status
    return self.get('statuses/show/%s' % params.get('id'), params=params)
  File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 270, in get
    return self.request(endpoint, params=params, version=version)
  File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 264, in request
    api_call=url)
  File "/anaconda3/lib/python3.6/site-packages/twython/api.py", line 199, in _request
    retry_after=response.headers.get('X-Rate-Limit-Reset'))
twython.exceptions.TwythonError: ('Twitter API returned a 403 (Forbidden), User has been suspended.', 'occurred at index 6')

и это мой код

client = Twython(creds['consumer_key'],
    creds['consumer_secret'],oauth_version=2)
ACCESS_TOKEN = client.obtain_access_token()
twitter = Twython(creds['consumer_key'], access_token=ACCESS_TOKEN)
print(twitter.get_application_rate_limit_status()['resources']['statuses']['/statuses/show/:id'])
def getTweet(row):
    print(row)
    tweet = None
    wait = 0
    while tweet is None:
        try:
            print(twitter.get_application_rate_limit_status()['resources']['statuses']['/statuses/show/:id'])
            tweet = twitter.show_status(id=int(row['id']))
            wait = 0
        except TwythonError:
            time.sleep(2)
            wait += 2
            print("time -",wait)
            pass
    print(tweet['text'])
    return tweet['text']

df = pd.read_csv("NAACL_SRW_2016.csv", names=['id','category'])
df['tweet'] = df.apply(getTweet,axis=1)
df['id'].to_csv('tweets.csv',index=False)

Я также пытался ждать между запросами в твиттере, которые работают, если я отправляю их слишком быстро, и именно поэтому я получаю эту ошибку. Любая помощь будет принята с благодарностью.

...