2016-10-26 3 views
0

Если я следующий поиск через Twitter -Исторический поиск с использованием Twitter API

search term: "from:jack just setting up my twttr" 

URL: https://twitter.com/search?q=from%3Ajack%20just%20setting%20up%20my%20twttr&src=typd

Я могу посмотреть первый твит когда-либо на Twitter. Мне интересно, возможно ли это программно, используя что-то вроде Linq2Twitter или Tweetinvi?

Я попытался с помощью Linq2Twitter как так -

TwitterContext twitterCtx = new TwitterContext(auth); 

const int MaxSearchEntriesToReturn = 100; 

string searchTerm = "from:jack just setting up my twttr"; 

      List<Status> searchResponse = 

       (from search in twitterCtx.Search 
       where search.Type == SearchType.Search && 
         search.Query == searchTerm && 
         search.Count == MaxSearchEntriesToReturn && 
         search.SinceID == 1 
       select search.Statuses) 
       .SingleOrDefault(); 

Однако это вернуть счетчик нулевой твиты в searchResponse, это возможно? Мое предположение было бы в том, что, поскольку этот трюк составляет десять лет, ограничения api просто не позволяют вам вернуться туда далеко, не имея третьего пожарного шланга, такого как Gnip?

+0

Search API надежно возвращает твиты только за последние 7 дней. Tweetinvi или LinqToTwitter не смогут вам помочь. Как вы упомянули, вам придется использовать Gnip или другую третью сторону, которая хранит этот тип информации. – Linvi

ответ

0

API поиска только возвращается через пару недель и не является комплексной поисковой системой. Скорее всего, это только отображают в соответствии с алгоритмом незарегистрированной Twitter релевантности:

Twitter Search API

Это говорит, что ваш код не будет работать, потому что LINQ к Twitter является асинхронной. Вы должны переписать запрос в виде:

 List<Status> searchResponse = 
      await 
      (from search in twitterCtx.Search 
      where search.Type == SearchType.Search && 
        search.Query == searchTerm && 
        search.Count == MaxSearchEntriesToReturn && 
        search.SinceID == 1 
      select search.Statuses) 
      .SingleOrDefaultAsync(); 

Потому что ваш SinceID так рано, вы до сих пор не может получить эти первые результаты по причинам, изложенным выше. Обратите внимание на ключевое слово ожидания и суффикс «Async» на SingleOrDefault. Как только это будет сделано, вам нужно убедиться, что вся цепочка вызовов вашего кода является асинхронной.

Смежные вопросы