【问题标题】:How to get twitter server time?如何获取推特服务器时间?
【发布时间】:2010-02-05 19:49:03
【问题描述】:

所以我正在尝试使用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 中获取当前服务器时间?

谢谢

【问题讨论】:

  • 您可能会认为它们同步到 NTP 服务器。如果没有简单的方法,您可以通过同步到 NTP 服务器进行测试,然后以编程方式在已知时间进行 API 调用,并记录调用结束的时间和获得响应的时间。然后,您可以使用该时间间隔与推文上的时间注释进行比较。

标签: twitter tweetsharp


【解决方案1】:

我不确定您将如何获取 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();

【讨论】:

    【解决方案2】:

    另一种方法(也是 Twitter 推荐的方法)是从其 API 服务器的响应中提取 Date 标头,这提供了 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
    ...
    

    参考:how to get the twitter server time (synchronize)? 在 dev.twitter.com 支持网站上。

    引用Taylor Singletary:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 2011-05-25
      • 2011-10-21
      相关资源
      最近更新 更多