我正在使用Matlab的Twitter API,特别是通过twitter
的Datafeed Toolbox类。
我基本上遵循官方文档中的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
现在,我想使用高级搜索 API。 two endpoints用于访问推文:
- 30天端点:提供前30天的推文。
- 完全存档端点:提供对Tweets的完整和即时访问,该访问可追溯到2006年3月的第一条Tweet。
此外,Premium API具有two tiers的访问权限:
- 免费沙箱访问权限,可进行初始测试和开发。
- 付费高级版访问权限,可提供更多访问权限。
上面的链接指定了与付费访问相比与沙盒相关的限制。
我正在尝试使用具有沙盒访问权限的完全存档端点。为此,我必须在Twitter上创建一个dev
的{{3}}。
Matlab的search
类中的twitter
方法(如上所述,适用于Standard访问)不适用于Premium访问。但是我注意到search
实际上调用了getdata
,后者确实适用于高级访问,如下所示。首先,需要定义高级访问URL:
c.URL = 'https://api.twitter.com/1.1/tweets/search/fullarchive/dev.json';
,然后使用以下语法:
s = getdata(c,c.URL,'query','Jimi Hendrix'); % this works
我还能够在查询字符串中添加developer environment,例如,指定地理位置范围或将搜索限制为包含图像的推文:
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中定义的其他operators来完善搜索,例如fromDate
,toDate
或maxResults
:
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
等参数必须是查询字符串的一部分?还是Premium搜索的沙盒层不支持这些参数?
对于上下文,我request parameters {em>端点,层,开发人员环境和令牌的意思是,但我仍然想don't really know。
答案 0 :(得分:2)
根据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
吗?它们的用法几乎相同。