返回我时间线上的所有推文
本文关键字:时间线 返回 | 更新日期: 2023-09-27 18:30:14
我希望返回我在时间线上发布的所有推文。
我正在使用LinqToTwitter库,所以-
var statusTweets =
from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.UserID == MyUserID
&& tweet.Count == 200
select tweet;
statusTweets.ToList().ForEach(
tweet => Console.WriteLine(
"Name: {0}, Tweet: {1}'n",
tweet.User.Name, tweet.Text));
这很好,并带回了前200个。然而,前200似乎是我能检索到的最大值,因为有办法带回1000吗?似乎没有像这个库的其他部分那样的next cursor movement
选项可以移动到下一页等。
您可以使用Count、MaxID和SinceID的组合来浏览tweet。这听起来很奇怪,但考虑到推特流不断更新,这种方法有很好的理由。我写了一篇博客文章,《使用LINQ to Twitter处理时间线》,这篇文章指向了Twitter文档,并描述了LINQ to推特是如何做到这一点的。
// last tweet processed on previous query set
ulong sinceID = 210024053698867204;
ulong maxID;
const int Count = 10;
var statusList = new List<status>();
var userStatusResponse =
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "JoeMayo" &&
tweet.SinceID == sinceID &&
tweet.Count == Count
select tweet)
.ToList();
statusList.AddRange(userStatusResponse);
// first tweet processed on current query
maxID = userStatusResponse.Min(
status => ulong.Parse(status.StatusID)) - 1;
do
{
// now add sinceID and maxID
userStatusResponse =
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "JoeMayo" &&
tweet.Count == Count &&
tweet.SinceID == sinceID &&
tweet.MaxID == maxID
select tweet)
.ToList();
if (userStatusResponse.Count > 0)
{
// first tweet processed on current query
maxID = userStatusResponse.Min(
status => ulong.Parse(status.StatusID)) - 1;
statusList.AddRange(userStatusResponse);
}
}
while (userStatusResponse.Count != 0 && statusList.Count < 30);