使用 Twitter 进行历史搜索 API
Historical search using Twitter API
如果我通过 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 上查看有史以来的第一条推文。
我想知道是否可以使用 Linq2Twitter or 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 这样的第三方消防水管的情况下返回这么远?
The 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" 后缀。完成后,您需要确保代码的整个调用链是异步的。
如果我通过 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 上查看有史以来的第一条推文。 我想知道是否可以使用 Linq2Twitter or 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 这样的第三方消防水管的情况下返回这么远?
The 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" 后缀。完成后,您需要确保代码的整个调用链是异步的。