使用Twitter API进行历史搜索

时间:2016-10-26 18:07:58

标签: c# twitter linq-to-twitter tweetinvi

如果我通过Twitter进行以下搜索 -

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

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

我可以在Twitter上查看有史以来的第一条推文。 我想知道这是否可以通过编程方式使用Linq2TwitterTweetinvi

我尝试过使用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这样的第三方防火软管的情况下回到这一步吗?

1 个答案:

答案 0 :(得分:0)

Search API只能回溯几周,并不是一个全面的搜索引擎。相反,它只根据未记录的Twitter相关性算法显示:

Twitter Search API

那就是说,你的代码不起作用,因为LINQ to 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太早了,出于前面解释的原因,您可能仍然无法收到这些早期结果。请注意SingleOrDefault上的await关键字和“Async”后缀。完成后,您需要确保代码的整个调用链是异步的。