Песочница API Премиум Twitter: код ошибки 403 - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь получить данные из Twitter через Premium API Sandbox.

Я создал 30-дневную Premium API Sandbox, и мой код для отправки запроса приведен ниже.

from TwitterAPI import TwitterAPI

consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'XXX'
access_token_secret = 'XXX'

api = TwitterAPI(consumer_key, consumer_secret, access_token, access_token_secret)
r = api.request('tweets/search/30day/:test.json', {'q' : 'python') //test is my own label

for item in r:
     print(item['text'])

Тем не менее, я продолжаю получать код ошибки 403, например:

Traceback (most recent call last):
  File "Twitter_api_srch_full.py", line 11, in <module>
    for item in r:
  File "/anaconda3/lib/python3.6/site-packages/TwitterAPI/TwitterAPI.py", line 206, in __iter__
    return self.get_iterator()
  File "/anaconda3/lib/python3.6/site-packages/TwitterAPI/TwitterAPI.py", line 193, in get_iterator
    raise TwitterRequestError(self.response.status_code)
TwitterAPI.TwitterError.TwitterRequestError: Twitter request failed (403)

Кто-нибудь знает возможные причины возникновения такой ошибки?

Спасибо за помощь:)

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

В вашем коде есть несколько проблем:

  1. Метке, которой вы пользуетесь, не следует предшествовать двоеточие или заканчиваться .json
  2. Параметр 'q' должен быть 'query'

В репозитории TwitterAPI есть sample , но вот что-то работает:

from TwitterAPI import TwitterAPI

consumer_key = 'XXX'
consumer_secret = 'XXX'
access_token = 'XXX'
access_token_secret = 'XXX'

PRODUCT = '30day'
LABEL = 'development'

api = TwitterAPI(consumer_key, consumer_secret, access_token, access_token_secret)
r = api.request('tweets/search/%s/:%s' % (PRODUCT, LABEL), {'query' : 'python'}) 

for item in r:
     print(item['text'])
0 голосов
/ 17 июня 2019

Поскольку TwitterAPI не является официальной оболочкой Python для API Twitter Premium и Enterprise, я очень рекомендую вам использовать search-tweets-python , поскольку это twitterdev release.

Итак, для установки search-tweets-python вы можете сделать это через PyPi с помощью следующей команды:

python -m pip install searchtweets

Вы можете получить более подробную информацию о searchtweets Пакет PyPi в его последней версии.

После установки вам нужно создать файл .yaml какописано в https://github.com/twitterdev/search-tweets-python/blob/master/examples/credential_handling.rst, что в вашем случае, используя 30-дневный поиск в SandBox, будет выглядеть так:

enter image description here

После созданияtwitter_api_premium_credentials.yaml файл, вы можете начать использовать Premium Twitter API через Python, и код в вашем случае будет более или менее похож на:

from searchtweets import load_credentials, gen_rule_payload, collect_results, ResultStream


premium_search_args = load_credentials("twitter_api_premium_credentials.yaml",
                                       yaml_key="search_tweets_premium_api",
                                       env_overwrite=False)

rule = gen_rule_payload("python lang:en", results_per_call=100)

rs = ResultStream(rule_payload=rule,
                  max_results=100,
                  max_pages=1,
                  **premium_search_args)

tweets = list(rs.stream())

[print(tweet.all_text, end='\n\n') for tweet in tweets[0:10]]

Как вы можете видеть на фрагменте кода выше, выимпортируют функции, которые нужно использовать для получения твитов, получая токен на предъявителя с помощью yУчетные данные, генерация полезной нагрузки запроса или правила и получение твитов.

Надеюсь, это помогло вам!

0 голосов
/ 05 октября 2018

Вы используете параметр q API поиска для поиска Premium API.Вместо этого используйте query, например:

r = api.request('tweets/search/30day/:test', {'query' : 'python'}) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...