LinqToTwitter 获取转推状态
LinqToTwitter get Retweet status
我正在使用 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);
}
}
我认为这个解决方案有两个问题:
它会为我要显示的每条推文调用一次 API,这意味着它可能需要很多时间。
我很快就会得到一个 "Rate Limit exceeded" 异常,告诉我这不是正确的方法。
最好的方法是什么?
这比我想象的要简单:-)
信息在 属性 Status.Retweeted
中的每个 Status 中,但在默认搜索查询后未填写:
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;
我正在使用 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);
}
}
我认为这个解决方案有两个问题:
它会为我要显示的每条推文调用一次 API,这意味着它可能需要很多时间。
我很快就会得到一个 "Rate Limit exceeded" 异常,告诉我这不是正确的方法。
最好的方法是什么?
这比我想象的要简单:-)
信息在 属性 Status.Retweeted
中的每个 Status 中,但在默认搜索查询后未填写:
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;