我曾使用linqtotwitter从twitter获取推文。
但是,如果我尝试使用sinceid拉取推文并且maxid返回空,我也可以一次只推送一个推文,我也会在查询中执行范围日期。
使用下面的代码我只能得到100条推文。我做错了什么
感谢
我的代码
var auth = new SingleUserAuthorizer
{
Credentials = new InMemoryCredentials
{
ConsumerKey = "xxxxx",
ConsumerSecret = "xxxxx",
OAuthToken = "xxxxx",
AccessToken = "xxxxxxx"
}
};
var twitterCtx = new TwitterContext(auth);
var ownTweets = new List<Status>();
ulong sinceId = 0;
ulong maxID = 0;
int lastStatusCount = 0;
var dateFrom = DateTime.Now.AddDays(-20);
bool flag = true;
var statusResponse = new List<Status>();
statusResponse = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == screenname
&& tweet.Count == 100
&& (tweet.CreatedAt >= dateFrom && tweet.CreatedAt <= DateTime.Now)
select tweet).ToList();
if (statusResponse.Count > 0)
{
maxID = statusResponse.Min(status => ulong.Parse(status.StatusID)) - 1;
ownTweets.AddRange(statusResponse);
sinceId = Convert.ToUInt64(ownTweets.Last().StatusID);
}
do
{
int rateLimitStatus = twitterCtx.RateLimitRemaining;
if (rateLimitStatus != 0)
{
statusResponse = (from tweet in twitterCtx.Status
where tweet.Type == StatusType.User
&& tweet.ScreenName == screenname
&& tweet.SinceID == sinceId && tweet.MaxID == maxID
&& tweet.Count == 100
&& (tweet.CreatedAt >= dateFrom && tweet.CreatedAt <= DateTime.Now)
select tweet).ToList();
lastStatusCount = statusResponse.Count;
if (lastStatusCount != 0)
{
maxID = statusResponse.Min(status => ulong.Parse(status.StatusID)) - 1;
ownTweets.AddRange(statusResponse);
}
else
{
flag = false;
}
}
else
{
flag = false;
}
}
while (flag);
答案 0 :(得分:1)
您可以通过更改初始化SinceID的方式来解决此问题,该ID表示要检索的最旧的推文。请记住,您在列表中向后工作,直至到达SinceID。
有关详细信息,请访问我的博客文章使用Timelines with LINQ to Twitter。