Понимание тестовой среды Twitter Premium API в python - PullRequest
1 голос
/ 13 июля 2020

У меня уже есть стандартный API Twitter (я недавно получил одобрение и еще не использовал Twitter API), потому что мне нужно собирать исторические твиты. Итак, мне нужно перейти на Premium API, но следует ли выбрать песочницу API, чтобы протестировать свой код перед оплатой и обновить полный архив премиум API? Боюсь потерять несколько твитов и уменьшить количество запросов. Я немного запутался в понимании некоторых операторов results_per_call = 100 .. max_results = 100 .. что они означают? Могу ли я выбрать любые числа, чтобы получать больше твитов? Сколько запросов я могу использовать в день? Я нашел код в python, который я собираюсь использовать? это правильно? Я новичок в python где я могу найти файл JSON на моем компьютере? и как преобразовать этот файл в .cvs?

!pip install searchtweets
!pip install yaml
import yaml
config = dict(
search_tweets_api = dict(
    account_type = 'premium',
    endpoint = 'https://api.twitter.com/1.1/tweets/search/fullarchive/YOUR_LABEL.json',
    consumer_key = 'YOUR_CONSUMER_KEY',
    consumer_secret = 'YOUR_CONSUMER_SECRET'
))
with open('twitter_keys_fullarchive.yaml', 'w') as config_file:
yaml.dump(config, config_file, default_flow_style=False)
from searchtweets import load_credentials
premium_search_args = load_credentials("twitter_keys_fullarchive.yaml",
                                   yaml_key="search_tweets_api",
                                   env_overwrite=False)
print(premium_search_args)
from searchtweets import gen_rule_payload 
query = "(#COVID19 OR  # Corona_virus) (pandemic OR corona OR  infected OR vaccine)" rule = gen_rule_payload(query, results_per_call=100, from_date="2020-01-01", to_date="2020-01-30")`         from searchtweets import ResultStream
rs = ResultStream(rule_payload=rule,
              max_results=100,
              **premium_search_args) print(rs)
mport json
with open('twitter_premium_api_demo.jsonl', 'a', encoding='utf-8') as f:
n = 0
for tweet in rs.stream():
    n += 1
    if n % 10 == 0:
        print('{0}: {1}'.format(str(n), tweet['created_at']))
    json.dump(tweet, f)
    f.write('\n') print('done')

Заранее большое спасибо.

1 Ответ

0 голосов
/ 13 июля 2020

Когда-то у меня была такая же задача по сбору данных твиттера с использованием разных условий. После долгих поисков и тестов мне пришлось создать полностью отдельный python API твиттер-клиента для моей задачи. Это то, что я знаю об API (документация немного сбивает с толку)

Twitter API имеет 3 версии для поиска и загрузки данных.

  • Standard (бесплатная версия с ограничениями)
  • Premium (платная версия с некоторыми расширенные функции)
  • Enterprise (платная версия с параметрами настройки для крупномасштабных операций)

Стандартный API

  • Бесплатное использование с правильной аутентификацией

  • Возвращать только данные за последние 7 дней

  • Можно использовать стандартные операторы поиска

  • Вы можете отправить ограниченное количество запросов в течение заданного периода времени (например, 180 запросов в 15-минутном окне для авторизации пользователя и 450 запросов в 15-минутном окне для авторизации приложения)

  • возврат одного запроса 1 00 объектов данных (100 твитов)

Premium API

Preimum APi включает 2 версии.

  1. 30- day Endpoint - Предоставляет твиты, опубликованные в течение последних 30 дней
  2. Конечные точки полного архива - Предоставляет твиты начиная с 2006 года

эти две версии используют одни и те же конечные точки, и единственная разница - это временные рамки, в которых вы можете искать .

  • Пакет Premium возвращает не более 500 объектов данных на запрос, однако вы можете ограничить количество возвращаемых данных в соответствии с вашим вариантом использования.
  • Выберите запросы в месяц по подписке (например, 50 запросов, 250 запросов (в месяц))

Ответы на ваши вопросы:

results_per_call = 100 означает, сколько объектов твита возвращается API по умолчанию и max_results = 100 - сколько объектов вам нужно.

следует ли мне выбрать песочницу API для тестирования моего кода перед оплатой и обновления полного архива премиум API?

да, ты можешь проверить бас i c logi c и некоторые поисковые запросы и проверка возвращаемого объекта с помощью бесплатного сервиса. Но если вам нужно искать разницу в датах более 7 дней или операторы премиум-класса, вы должны использовать премиум API.

это полезные ссылки

https://developer.twitter.com/en/docs/tweets/search/overview

операторы

https://developer.twitter.com/en/docs/tweets/search/guides/standard-operators https://developer.twitter.com/en/docs/tweets/search/guides/premium-operators

API

https://developer.twitter.com/en/docs/tweets/search/api-reference/premium-search https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets

В документации есть больше скрытой информации, пожалуйста, добавьте больше, если найдете что-нибудь полезно.

...