微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Twitter API v2:当参数具有 start_time、end_time

如何解决Twitter API v2:当参数具有 start_time、end_time

一直在玩 Twitter API。事情进展顺利,直到我添加了开始和结束时间,以及搜索的粒度。 根据 Twitter api 文档,我相当有信心字符串值是正确的,并且 正确添加到参数。 但是我在使用 params 时做错了,有人可以帮我吗。

有效的代码,IE 导致 200 响应和推文:

keywords = 'telsa'
api,query = 'https://api.twitter.com/2','/tweets/search/recent'
request = f'{api}{query}'
params = {'query': keywords,'tweet.fields': 'created_at,lang',# no space before lang
          'max_results': '10'}
header = {'authorization':f'Bearer {bearer_token}'}

response = requests.get(request,headers=header,params=params)
if response: # boolean True if response is 200,print(response.response.json())
else:
    print(response)
    print(params)

不起作用的代码:400 响应:添加开始时间、结束时间、粒度

<snip>
header = {'authorization':f'Bearer {bearer_token}'}

**************** NEW CODE **************************
# Get datetime for Now and 7 days ago,correctly formatted for Twitter API
dtformat = '%Y-%m-%dT%H:%M:%sZ'
from datetime import datetime,timedelta
time = datetime.Now()
start_time = time - timedelta(days=7)

# convert to strings
start_time,end_time = start_time.strftime(dtformat),time.strftime(dtformat)

# Add new parameters to params dict
params['start_time'] = start_time
params['end_time']  = end_time
params['granularity'] = 'HOUR'
****************************************************

response = requests.get(request,params=params)
<snip>

..以及最后打印的参数:

params: {'query': 'telsa','max_results': '10','start_time': '2021-03-14T14:14:44Z','end_time': '2021-03-21T14:14:44Z','granularity': 'HOUR'}

twitter API docs 显示 start_time、end_time 示例值。它们是相同的格式。
最近发布的使用 API v2 的教程以相同的方式附加了新参数。
添加 3 个新时间变量的任意组合会产生 400 响应。
如果重要的话,Windows 10、64 位

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。