我正在尝试使用TweetSharp API
从特定的Hashtag中获取所有推文。我正在使用以下代码
public ActionResult AddTwitterDataTop(TwitterData objTwitterData)
{
try
{
var service = new TwitterService(ConsumerKey, ConsumerSecret);
service.AuthenticateWith(AccessToken, AccessTokenSecret);
var tweets = service.Search(new SearchOptions { Q = "#MisuseOfRapeLaw", Count = 100, Resulttype = TwitterSearchResultType.Recent });
IEnumerable<TwitterStatus> status = tweets.Statuses;
foreach (var item in status)
{
var qry = (from s in ObjEdbContext.ObjTwitterDatas where s.Text == item.Text && s.ScreenName == item.User.ScreenName select s).FirstOrDefault();
if (qry != null) continue;
objTwitterData.ScreenName = item.User.ScreenName;
objTwitterData.UserName = item.User.Name;
objTwitterData.Text = item.Text;
objTwitterData.RetweetCount = item.RetweetCount;
objTwitterData.FavouritesCount = item.User.FavouritesCount;
objTwitterData.ProfileImageUrl = item.User.ProfileImageUrl;
objTwitterData.TimeStam = item.CreatedDate;
objTwitterData.RetweetUrlId = "https://twitter.com/intent/retweet?tweet_id=" + item.Id;
objTwitterData.ReplyaUrlId = "https://twitter.com/intent/tweet?in_reply_to=" + item.Id;
objTwitterData.FavoriteUrlId = "https://twitter.com/intent/favorite?tweet_id=" + item.Id;
objTwitterData.IsValid = "Pending";
ObjEdbContext.ObjTwitterDatas.Add(objTwitterData);
ObjEdbContext.SaveChanges();
ModelState.Clear();
}
}
catch (Exception e)
{
ViewBag.ErrorMessage = "Some exception occured" + e;
return RedirectToAction("Index");
}
return RedirectToAction("Index");
}
有时它工作正常,有时候在此行之后会出现以下异常
var tweets = service.Search(new SearchOptions { Q = "#MisuseOfRapeLaw", Count = 100, Resulttype = TwitterSearchResultType.Recent });
对于Int32,JSON整数2265545852太大或太小。路径'状态[19] .in_reply_to_user_id',第1行,位置60279。
如果我将我的计数改为18而不是100,那就可以了。
上面的代码只返回100个数据,这些数据混合了推文和重新推文。 有没有办法实现这些
SO中有许多Q&amp; A类似于这个问题,但它们都没有帮助我。
答案 0 :(得分:2)
目前发布给Nuget的TweetSharp版本不支持很多东西(用户等)的长整数id。如果您的搜索结果从具有较大ID的用户返回推文,则会因此错误而失败。
TweetSharp的nuget存储库中的源代码确实包含了一个修复程序,因此,如果您能够自己获取并构建代码并引用您构建的二进制文件,则该问题应该消失。
如果您不想这样做,则需要使用TweetSharp的一个分支(不再维护原始的TweetSharp)。 Nuget TweetMoaSharp(我目前主要维护)或TweetSharp-Alternate上有一些备用软件包。或者,您可以更改为完全不同的库,例如LinqToTwitter。