0

所以我正在尝试使用tweet sharp 为twitter 关键词构建一个实时监控工具。我使用搜索 API 每 10-15 秒收集一次查询。当我拨打电话时,我只想收集自上次更新以来出现的推文。

var twitter = FluentTwitter.CreateRequest().AuthenticateAs("username", "password").Search().Query().Containing("key word").Take(1000);
var response = twitter.Request();

currentResponseDateTime= Convert.ToDateTime(response.ResponseDate);

var messages = from m in response.AsSearchResult().Statuses
               where m.CreatedDate > lastUpdateDateTime
               select m;

lastUpdateDateTime = currentResponseDateTime;

我的问题是 twitter 服务器时间与客户端时间相差几秒钟。我环顾四周,试图获取我从Response.ResponseDate属性收到响应的日期时间,但它看起来像是根据本地计算机时间设置的。即currentResponseDateTime比 Twitter 服务器时间提前几秒钟。所以我最终没有收集一些推文。

有谁知道我如何从 twitter 搜索或 REST API 获取当前服务器时间?

谢谢

4

2 回答 2

4

我不确定您将如何获得 twitter 服务的本地服务器时间,但您可以采取的一种方法是将最近一次 twitter 更新的日期存储在“lastUpdateDateTime”字段中。这样,无论 twitter 服务器的偏移量如何,您都可以保证收到自上次看到的所有消息。

        var twitter = FluentTwitter.CreateRequest().AuthenticateAs("username", "password").Search().Query().Containing("key word").Take(1000);
        var response = twitter.Request();

        currentResponseDateTime= Convert.ToDateTime(response.ResponseDate);

        var messages = from m in response.AsSearchResult().Statuses
                       where m.CreatedDate > lastUpdateDateTime
                       select m;

        lastUpdateDateTime = messages.Select(m => m.CreatedDate).Max();
于 2010-02-05T19:51:24.167 回答
0

另一种方法(也是 Twitter 推荐的方法)是Date从 API 服务器的响应中提取标头,这提供了 Twitter 的 GMT 时间概念。这假定您可以访问服务器响应标头,这取决于您用于访问 API 的方法。

例如,点击https://api.twitter.com/1/help/test.json

$ lynx --dump --head https://api.twitter.com/1/help/test.json
HTTP/1.0 200 OK
Date: Tue, 22 Jan 2013 13:30:36 GMT
...

参考:如何获取推特服务器时间(同步)?在 dev.twitter.com 支持网站上。

引用Taylor Singletary 的话

Twitter“认为”它的当前时间在对您进行的 API 调用的每个响应的“日期”HTTP 标头中返回。您还可以向 GET help/test 发出简单的 HTTP HEAD 请求,以获取标头作为应用程序的初始同步步骤。

于 2013-01-22T13:32:33.603 回答