如果我通过Twitter进行以下搜索-
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上查看第一条Tweet。我想知道如果这是可能的编程使用像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
中带回了零推文计数,这可能吗?我的猜测是,由于这条推文已经发布了10年,api限制根本不允许你在没有Gnip这样的第三方消防水带的情况下回到这么远。
搜索API仅在几个星期前推出,并不是一个全面的搜索引擎。更确切地说,它只根据未记录的Twitter相关算法显示:
Twitter搜索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"后缀。一旦完成,你需要确保你的代码的整个调用链是异步的。