我正在使用 LINQ to Twitter 4.1.0 检索带有特定主题标签的推文。但我面临的问题是我只收到 600 条推文。 我想获得几个月前的推文。 谁能建议我怎么做?
[List<Search> searchResultsList = new List<Search>();
ulong lastId = 0;
var context = new TwitterContext(auth);
int count = 0;
int maxNumberToFind = 1000;
var dateFrom = DateTime.Now.AddDays(-20);
var searchResults =
(from search in context.Search
where search.Type == SearchType.Search &&
search.Query == Query &&
search.SinceID == 2016-12-11 &&
search.Count == 150 &&
search.ResultType == ResultType.Recent &&
search.IncludeEntities == true
select search).ToList();][1]
最佳答案
我建议查看 documentation看起来您可以指定一个“直到”日期和一个 MaxId:
Until: Tweets up to this date, YYYY-MM-DD. (string)
MaxID: Return tweets prior to or equal to this ID. (ulong)
我会查询“直到”日期并使用 LINQ 的“LastOrDefault()”获取最后一条推文。然后使用该对象的 ID 作为下一个查询的 MaxID 进行另一个查询。这应该会在您要求的特定日期之前为您提供所有推文。
注意这个参数也很重要:
Count Number of tweets to retrieve for each page. Max is 100. (int)
这可能与您收到的推文数量有限有关。
编辑: This post Joe Mayo(LinqToTwitter 的创建者)的文章也可能对您有所帮助。这是一些代码(免责声明:我没有测试过这个,但你明白了):
List<Search> searchResultsList = new List<Search>();
var context = new TwitterContext(auth);
var maxCount = 100;
var untilDate = new DateTime(2016,12,11);
var lastTweetInRange =
(from search in context.Search
where search.Type == SearchType.Search &&
search.Query == Query &&
search.Count == maxCount &&
search.Until == untilDate &&
search.IncludeEntities == true
select search).LastOrDefault();
var tweetsInRange = (from search in context.Search
where search.Type == SearchType.Search &&
search.Query == Query &&
search.Count == maxCount &&
search.MaxId == lastTweetInRange.id &&
search.IncludeEntities == true
select search).ToList();
关于c# - 如何获取几个月前的推文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593202/