【发布时间】:2021-06-18 01:32:06
【问题描述】:
一直在玩 Twitter API。事情进展顺利,直到我为搜索添加了开始和结束时间以及粒度。 根据 Twitter api docs,我相当有信心字符串值是正确的,并且 正确添加到参数。 但是我在参数上做错了什么,有人可以帮我吗?
有效的代码,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 响应:添加 start_time、end_time、粒度
<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, headers=header, params=params)
<snip>
..以及最后打印的参数:
params: {'query': 'telsa', 'tweet.fields': 'created_at,lang', '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 如果重要的话
【问题讨论】:
标签: python-3.x twitter twitterapi-python