我已经阅读了Twitter REST API文档,我知道它说你可以一次获取200个最多800个。但是......我不能。我正在拉200,使用最后一条推文作为max_id,然后发送另一个请求,但我只收到第一个请求的最后一条推文,而不是我假设的800限制的剩余。
所以我做了一些研究,我发现当我从其他帐户发送更多直接消息时,我的其他直接消息正在消失(即,如果我从一个名为“sup”的帐户收到200条消息,我发送了5条消息来自名为“foo”,“sup”的帐户的消息将仅显示195条直接消息,“foo”将显示5.这5条消息将在twitter DM窗口以及API调用中从“sup”消失。
我正在使用Twython来做这件事,但我不相信切换回请求会改变任何东西,因为我可以看到消息从聊天记录中消失。这是否意味着Twitter只存储了200个DM?或者我做错了什么。
这是我用于提取直接消息的代码。请记住,我仍然不知道如何解释DM在twitter DM控制台中消失的情况。
test_m = twitter.get_direct_messages(count=200)
i = 0
for x in test_m:
print 'dm number = ' + str(i) + '| dm id= '+ str(x['id']) + ' |text= ' + x['text']
i += 1
m_id = test_m[-1]['id']
test_m_2 = twitter.get_direct_messages(count=200, max_id=m_id)
此代码将test_m作为包含200个项目的数组返回,将test_m_2作为1个项目的数组返回,其中包含test_m的最后一个元素。
编辑:嗯,还没有回复,但我想我应该补充说,这个方法成功地为我所做的其他api调用返回了200多条消息(用户时间线,提及时间轴,转发)。根据我的测试,我必须假设在所有DM交互中,twitter只存储了200条传入消息。如果我错了,请告诉我!
答案 0 :(得分:2)
布赖恩,
Twitter存储的邮件超过最近200封,如果您要使用destroy_direct_message删除1条直接邮件,则可以访问1条旧的直接邮件。
删除100条旧的直接消息将允许您访问另外100条消息等。
我既不使max_id也不使页面工作。不确定Twython或Twitter中的错误; - (
JJ
答案 1 :(得分:1)
目前,API代表您可以访问最新的3200条推文,但只有200条最新收到直接消息(direct_messages
端点)来自对话或800最新消息已发送直接消息(direct_messages/sent
端点)。
要回答您的问题,我认为Twitter“存储”的直接消息数量不受限制。最近,我已经能够使用我为此目的创建的tool检索超过17000个直接消息(以及所有上传的媒体)的完整对话。