返回我时间线上的所有推文

本文关键字:时间线 返回 | 更新日期: 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);