我希望返回我在时间轴上发布的所有推文。
我正在使用Linq To Twitter库 -
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
选项,就像这个库的其他部分可以移动到下一页等。
答案 0 :(得分:4)
您可以使用Count,MaxID和SinceID的组合来翻阅推文。这听起来很奇怪,但鉴于推文流不断更新,这种方法有很好的理由。我写了一篇博客文章Working with Timelines with LINQ to Twitter,它指向Twitter文档,并描述了LINQ to Twitter如何做到这一点。
// 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);