Как получить твиттер серверное время? - PullRequest
0 голосов
/ 05 февраля 2010

Итак, я пытаюсь создать инструмент мониторинга в реальном времени ключевых слов в твиттере, используя твиттер. Я использую 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. В итоге я не собираю несколько твитов.

Кто-нибудь знает, как узнать текущее время сервера с помощью поиска в Твиттере или API REST?

Спасибо

Ответы [ 2 ]

4 голосов
/ 05 февраля 2010

Я не уверен, как вы могли бы узнать время локального сервера службы твиттера, но один из подходов, который вы могли бы использовать, - это сохранить дату самого последнего обновления твиттера, увиденного в поле «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 голосов
/ 22 января 2013

Другой подход (и тот, который рекомендует 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.

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

Текущее время, в которое Twitter «думает», возвращается в HTTP-заголовке «Date» каждого ответа на вызов API. Вы также можете отправить простой запрос HTTP HEAD в GET help / test, чтобы получить заголовок в качестве начального шага синхронизации для вашего приложения.

...