如果我通过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上查看有史以来的第一条推文。 我想知道这是否可以通过编程方式使用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 :(得分:0)
Search API只能回溯几周,并不是一个全面的搜索引擎。相反,它只根据未记录的Twitter相关性算法显示:
那就是说,你的代码不起作用,因为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”后缀。完成后,您需要确保代码的整个调用链是异步的。