Как да получите време на сървъра на twitter?

Така че се опитвам да създам инструмент за наблюдение в реално време за ключови думи в twitter, като използвам tweet sharp. Използвам 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?

Благодаря


person abudker    schedule 05.02.2010    source източник
comment
Може да приемете, че се синхронизират с NTP сървър. Ако няма лесен начин, можете да тествате чрез синхронизиране с NTP сървър и след това програмно извършване на API извикване в известно време и записване на времето, когато повикването излиза и времето, когато получавате отговор. След това можете да използвате този интервал като сравнение с анотацията за време в туитовете.   -  person Kaleb Pederson    schedule 05.02.2010


Отговори (2)


Не съм сигурен как ще получите времето на локалния сървър на услугата 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();
person Ryan Brunner    schedule 05.02.2010

Друг подход (и такъв, който 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
...

Справка: как да получа времето на сървъра в Twitter (синхронизиране)? на сайта за поддръжка на dev.twitter.com .

Цитирайки Тейлър Синглетари:

Текущият час, който Twitter „смята“, че е, се връща в HTTP заглавката „Дата“ на всеки отговор на извикване на API, което правите. Можете също така да подадете проста HTTP HEAD заявка, за да ПОЛУЧИТЕ помощ/тест, за да получите заглавката като първоначална стъпка за синхронизиране за вашето приложение.

person Inactivist    schedule 22.01.2013