0

我已经阅读了 Twitter REST API 文档,我知道它说您一次可以获取 200 个,最多可以获取 800 个。但是......我不能。我正在拉 200,使用最后一条推文作为 max_id,然后发送另一个请求,但我只收到来自第一个请求的最后一条推文,而不是我假设的 800 限制中的剩余部分。

所以我做了一些研究,发现当我从其他帐户发送更多直接消息时,我的其他直接消息正在消失(即,如果我从一个名为“sup”的帐户收到 200 条消息,而我从一个名为“foo”、“sup”的帐户将仅显示 195 条直接消息,而“foo”将显示 5 条。这 5 条消息将从 twitter DM 窗口中的“sup”以及 API 调用中消失。

我正在使用 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 条传入消息。如果我错了,请告诉我!

4

2 回答 2

2

布莱恩,

Twitter 存储了超过最后 200 条消息,如果您要使用 destroy_direct_message 删除 1 条直接消息,那么您可以访问 1 条添加的旧直接消息。

删除 100 条旧的直接消息将使您可以访问额外的 100 条消息等。

我既不让 max_id 也不让 page 工作。不确定是 Twython 还是 Twitter 中的错误;-(

JJ

于 2013-12-20T00:17:19.673 回答
1

目前,API 支持您最多可以获取一个帐户的最新 3200 条推文,但只能从对话中获取 200 条最新接收的直接消息(端点)或 800 条最新发送的直接消息(端点)。direct_messagesdirect_messages/sent

为了回答你的问题,我认为 Twitter “存储”的直接消息的数量没有限制。最近,我已经能够使用我为此目的创建的这个工具检索包含超过 17000 条直接消息(以及所有上传的媒体)的完整对话。

于 2016-10-09T22:11:18.137 回答