【问题标题】:LinqToTwitter get Retweet statusLinqToTwitter 获取转推状态
【发布时间】:2017-11-20 20:01:28
【问题描述】:

我正在使用 LinqToTwitter API,但遇到以下问题。

如果我(当前用户)已经转发了一条推文,但我可以更改 ToggleButton 上的 IsChecked 属性以进行转发,我如何获取信息。

我已经尝试获取一个状态的所有推文,以将其与我转发的推文 ID 列表进行比较。

var publicTweets = await (from tweet in TweetContent.Connection.Status
                          where tweet.Type == StatusType.Retweets &&
                                tweet.ID == TweetID
                          select tweet)
                          .ToListAsync();

foreach (var publicTweet in publicTweets)
{
    foreach (var myTweet in TweetContent.AllMyReTweets)
    {
        if (publicTweet.ID == myTweet)
        {
            // false means the ToggleButton is PreSet
            RetweetState = false;
            break;
        }
    }
}
// No hit
RetweetState = true;

这里定义了 TweetContent.AllMyRetweets:

 List<ulong> myList = new List<ulong>();
 var myRetweets = await (from retweet in TweetContent.Connection.Status
                         where retweet.Type == StatusType.RetweetsOfMe &&
                               retweet.Count == 100
                         select retweet)
                         .ToListAsync();

if (myRetweets != null)
{
    foreach (var tweet in myRetweets)
    {
        myList.Add(tweet.ID);
    }
}

我认为这个解决方案有两个问题:

  1. 它会为我要显示的每条推文调用一次 API,这意味着它可能需要很多时间。

  2. 我很快就会收到“超出速率限制”异常,告诉我这不是正确的方法。

最好的方法是什么?

【问题讨论】:

    标签: c# linq-to-twitter


    【解决方案1】:

    这比我想象的要容易:-)

    该信息在属性Status.Retweeted 的每个状态中,但在默认搜索查询后未填充,例如:

     var tweets = Enumerable.FirstOrDefault(
                                    from tweet in TweetContent.Connection.Search
                                    where tweet.Type == SearchType.Search &&
                                        tweet.Query == query &&
                                        tweet.IncludeEntities == true &&
                                        tweet.Count == maxNumberToFind && (tweet.MaxID == id)
                                    select tweet);
    

    在此之后,您必须使用刚刚收到的 tweetIDList 进行查找查询。这将用正确的值填充属性Status.Retweeted

            List<Status> tweets =
            await
            (from tweet in TweetContent.Connection.Status
             where tweet.Type == StatusType.Lookup &&
                   tweet.TweetIDs == tweetIDList
             select tweet)
            .ToListAsync();
    
            return tweets;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-21
      • 2014-03-05
      • 1970-01-01
      • 1970-01-01
      • 2016-04-28
      • 1970-01-01
      • 2014-10-26
      • 1970-01-01
      相关资源
      最近更新 更多