使用 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 相关性算法显示:

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" 后缀。完成后,您需要确保代码的整个调用链是异步的。