【问题标题】:Using additional request parameters in Twitter Premium Search API在 Twitter Premium Search API 中使用附加请求参数
【发布时间】:2020-01-14 19:29:23
【问题描述】:

我正在使用 Matlab 中的 Twitter API,特别是通过 Datafeed Toolbox 中的 twitter 类。

我基本上遵循了官方文档中的example code。我在我的 Twitter 开发者页面中创建了一个 Twitter 应用程序,并获得了它的 API 密钥和访问令牌。有了这些,我可以使用来自 Matlab 的 Twitter 标准搜索 API:

c = twitter(consumerkey,consumersecret,accesstoken,accesstokensecret);
% The variables 'consumerkey' etc are defined as character vectors
s = search(c,tweetquery,'count',100); % this works

现在我想使用 Premium search API。这有two endpoints 用于访问推文:

  • 30 天端点:提供过去 30 天的推文。
  • 完整存档端点:提供对自 2006 年 3 月第一条推文的完整和即时访问。

此外,Premium API 具有two tiers 的访问权限:

  • 免费沙盒访问权限,可进行初始测试和开发。
  • 付费高级版访问权限,提供更多访问权限。

与付费访问相比,上面的链接指定了与沙盒相关的限制。

我正在尝试使用具有 沙盒 访问权限的 full-archive 端点。为此,我必须在 Twitter 上创建一个 developer environment,并将其命名为 dev

Matlab 的twitter 类中的search 方法(如上所述,适用于标准访问)似乎不适用于高级访问。但我注意到search 实际上调用了getdata,后者确实适用于高级访问,如下所示。首先,需要定义 Premium 访问 URL:

c.URL = 'https://api.twitter.com/1.1/tweets/search/fullarchive/dev.json';

然后以下语法起作用:

s = getdata(c,c.URL,'query','Jimi Hendrix'); % this works

我还能够在查询字符串中添加operators,例如指定地理位置范围或将搜索限制为包含图像的推文:

s = getdata(c,c.URL,'query','place:"Palo Alto"'); % this works
s = getdata(c,c.URL,'query','Robert Smith bounding_box:[-0.2 51.4 0.1 51.6]') % this works

但是,这是我的问题,我无法使用 Twitter API 中定义的其他 request parameters 来优化搜索,例如 fromDatetoDatemaxResults:

s = getdata(c,c.URL,'query','John Frusciante', 'fromDate', '201708130000') % doesn't work
s = getdata(c,c.URL,'query','Rob Scallon', ...
    'fromDate', '201708130000', 'toDate', '201708150000') % doesn't work
s = getdata(c,c.URL,'query','Michael Lemmo', 'maxResults', '20') % doesn't work

以上所有都返回 HTTP/1.1 422 Unprocessable Entity 错误。

我的语法不正确吗?也许fromDate 等参数必须是查询字符串的一部分?或者高级搜索的沙盒层可能不支持这些参数?


对于上下文,我don't really knowendpointtierdeveloper environmenttoken 这样的所有术语是什么意思,但我还是想make this work

【问题讨论】:

  • 按照developer.twitter.com/en/docs/tweets/search/api-reference/… 的描述,您所谓的“添加请求参数”是为POST /search/:product 类型的请求定义的。这些是 HTTP POST 请求,您可以尝试使用 postdata (in.mathworks.com/help/datafeed/twitter.postdata.html) 代替 getdata。虽然它们的用法几乎相同,但您需要将参数作为 JSOn 对象发送。
  • @pii_ke 它有效!谢谢你。愿意将其发布为答案,以便我接受吗?例如s = postdata(c,c.URL,'query','John Frusciante', 'fromDate', '201708130000') 有效(与我的问题完全相同,但使用postdata 而不是getdata
  • 完成。对postdata 的相同调用很好。我认为postdata 在内部处理将参数转换为适当的格式。

标签: matlab rest twitter


【解决方案1】:

按照https://developer.twitter.com/en/docs/tweets/search/api-reference/premium-search#DataParameters 的描述,您所谓的“添加请求参数”是为POST /search/:product 类型的请求定义的。这些是HTTP POST 请求,您可以尝试使用postdata (https://in.mathworks.com/help/datafeed/twitter.postdata.html) 代替getdata。它们的用法几乎相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-15
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 2018-07-24
    • 2020-11-02
    • 1970-01-01
    相关资源
    最近更新 更多