跟进Extract BearerToken from LinqToTwitter IAuthorizer
虽然我没有将LTT库用于过去授权的任何事情(此时),但在使用
直接调用/ statuses / user_timeline API时,我似乎仍限于200条推文{参数字符串:user_id = {0}&amp; screen_name = {1} &amp; count = 3200 &amp; exclude_replies = true&amp; include_rts = false&amp; trim_user = false&amp; contributor_details = false} < / p>
和
webClient.Headers.Add(String.Format("Authorization: Bearer {0}", BearerToken));
这是TwitterContext
授权的限制吗?如果是这样,如何在不使用库调用的情况下更改该限制?
即。我不使用
statusResponse = (from tweet in twitterCtx.Status ...)
我没有使用该库,因为它正在利用Twitter搜索对象,这可能会因Twitter对搜索对象的限制而产生不一致的结果。
提前谢谢!
答案 0 :(得分:0)
根据Twitter的statuses/user_timeline documentation,count
的最大值为200.但是,这是每个查询的最大值。您可以进行多次查询以检索最多3200条推文。 Twitter在他们的Working with Timelines page中有一个很好的解释,说明如何使用时间轴来检索那些3200条推文。我意识到你不是在用LINQ来推特,但是为了其他任何能够找到这个答案的人的利益,LINQ to Twitter就是这样做的:
static async Task RunUserTimelineQueryAsync(TwitterContext twitterCtx)
{
//List<Status> tweets =
// await
// (from tweet in twitterCtx.Status
// where tweet.Type == StatusType.User &&
// tweet.ScreenName == "JoeMayo"
// select tweet)
// .ToListAsync();
const int MaxTweetsToReturn = 200;
const int MaxTotalResults = 100;
// oldest id you already have for this search term
ulong sinceID = 1;
// used after the first query to track current session
ulong maxID;
var combinedSearchResults = new List<Status>();
List<Status> tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "JoeMayo" &&
tweet.Count == MaxTweetsToReturn &&
tweet.SinceID == sinceID &&
tweet.TweetMode == TweetMode.Extended
select tweet)
.ToListAsync();
if (tweets != null)
{
combinedSearchResults.AddRange(tweets);
ulong previousMaxID = ulong.MaxValue;
do
{
// one less than the newest id you've just queried
maxID = tweets.Min(status => status.StatusID) - 1;
Debug.Assert(maxID < previousMaxID);
previousMaxID = maxID;
tweets =
await
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "JoeMayo" &&
tweet.Count == MaxTweetsToReturn &&
tweet.MaxID == maxID &&
tweet.SinceID == sinceID &&
tweet.TweetMode == TweetMode.Extended
select tweet)
.ToListAsync();
combinedSearchResults.AddRange(tweets);
} while (tweets.Any() && combinedSearchResults.Count < MaxTotalResults);
PrintTweetsResults(tweets);
}
else
{
Console.WriteLine("No entries found.");
}
}
您可以在Querying the User Timeline上的LINQ to Twitter文档中找到它。我还写了一篇博文Working with Timelines with LINQ to Twitter来解释LINQ到Twitter的分页方法。它适用于早期(非异步)版本,但概念仍然相同。