在 python 中理解 Twitter Premium API 沙盒

Posted

技术标签:

【中文标题】在 python 中理解 Twitter Premium API 沙盒【英文标题】:Understanding Twitter Premium API Sandbox in python 【发布时间】:2020-11-02 06:18:09 【问题描述】:

我已经有了 Twitter 标准 API(我最近获得了批准,还没有使用 Twitter API),因为我需要收集历史推文。 所以我必须升级到高级 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】:

一旦我有使用不同条件收集推特数据的相同任务,经过大量搜索和测试,我必须为我的任务创建完全独立的 python 推特客户端 API。这就是我对 API 的了解(文档很少有点混乱)

Twitter API 有 3 个版本用于搜索和下载数据。

标准版(有限制的免费版) 高级版(带有一些扩展功能的付费版) 企业版(付费版,可定制大规模运营选项)

标准 API

通过正确的身份验证即可免费使用

仅返回过去 7 天的数据

可以使用标准搜索运算符

您可以在给定的时间段内发送有限数量的请求(例如,用户身份验证在 15 分钟内发送 180 个请求,应用身份验证在 15 分钟内发送 450 个请求)

一个请求返回 100 个数据对象(100 条推文)

高级 API

Preimum APi 包括 2 个版本。

    30 天端点 - 提供过去 30 天内发布的推文 完整存档端点 - 提供从 2006 年开始的推文

这两个版本共享相同的端点,唯一的区别是您可以搜索的时间范围。

Premium 包每次请求最多返回 500 个数据对象,但您仍然可以根据您的用例限制返回计数。 按订阅选择每月请求(例如 50 个请求,250 个请求(每月))

回答您的问题:

results_per_call=100 表示 API 默认返回多少推文对象,ma​​x_results=100 表示您需要多少对象。

我应该选择 API 沙盒在付费前测试我的代码并升级高级 API 完整存档吗?

是的,您可以使用免费服务测试基本逻辑和一些搜索查询并检查返回对象。但是如果您需要搜索超过 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

文档中有更多隐藏信息,如果您发现任何有用的信息,请添加更多信息。

【讨论】:

以上是关于在 python 中理解 Twitter Premium API 沙盒的主要内容,如果未能解决你的问题,请参考以下文章

Azure DevOps (On-Prem) 备份失败

如何在 MS Access 2010 中组合多种查询类型?

使用 Tibco 和 GCP Pub/Sub 将旧的 On-Prem .Net 应用程序集成到 GCP

单片机中unsigned char 和unsigned int的区别

Azure DevOps On-prem 2019 无法创建继承的进程

为多个参数和页面编辑 .htaccess