2010-02-05 110 views
0

因此,我正在嘗試使用tweet sharp爲Twitter關鍵字構建一個實時監控工具。我使用搜索API每10-15秒收集一次查詢。當我打電話時,我只想收集自上次更新以來出現的推文。如何獲取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 = currentResponseDateTime; 

我的問題是,嘰嘰喳喳服務器的時間不同於客戶端的時間幾秒鐘。我環顧四周,試圖獲得日期時間,我收到了Response.ResponseDate屬性的響應,但它看起來像基於本地計算機時間設置的。 I.e currentResponseDateTime比Twitter服務器時間提前了幾秒鐘。所以我最終沒有收集一些推文。

有誰知道如何從twitter搜索或REST API獲取當前服務器時間?

感謝

+0

您可能會認爲它們同步到NTP服務器。如果沒有簡單的方法,您可以通過同步到NTP服務器進行測試,然後以編程方式在已知時間進行API調用,並記錄呼叫時間和響應時間。然後,您可以使用該時間間隔與推文上的時間註釋進行比較。 – 2010-02-05 19:55:30

回答

4

我不知道你怎麼能夠讓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(); 
+0

我想說的方式 – Vestel 2010-02-05 19:52:58

+0

這是一個好主意。謝謝! – abudker 2010-02-05 19:55:35

0

的另一種方法(和一個微博建議)是從他們的API服務器的響應,它提供了在GMT時間Twitter的概念拉Date報頭。這假定您可以訪問服務器響應頭,並且這取決於您用來訪問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支持網站how to get the twitter server time (synchronize)?

報價Taylor Singletary

當前時間,Twitter的「認爲」它是通過API調用你讓每個響應的「日期」 HTTP標頭中返回。您也可以發出一個簡單的HTTP HEAD請求來獲取幫助/測試,以將頭部作爲您應用的初始同步步驟。

相關問題