public static void UpdateStatus() { Login(); OnStatusUpdating(EventArgs.Empty); var status = new List<DGStatus>(); IOrderedEnumerable<DGStatus> newStatus = null; try { for (int i = 0; i < Contexts.Count; i++) { var query = from t in Contexts[i].Status where t.Type == StatusType.Home && t.CreatedAt >= s_lastStatusUpdating select new DGStatus(t, Accounts[i]); status.AddRange(query); } newStatus = status.Distinct(new StatusEqualityComparer()).OrderBy(s => s.CreatedAt); } catch (Exception ex) { OnStatusUpdateFailed(new StatusUpdateFailedEventArgs(ex)); return; } s_lastStatusUpdating = DateTime.UtcNow; foreach (var s in newStatus) { OnStatusReceived(new StatusEventArgs(s)); } OnStatusUpdated(new StatusUpdatedEventArgs(newStatus.ToArray())); }
private List<Status> GetAllTweets(ulong sinceId = 0) { var allTweets = new List<Status>(); using (var twitter = new TwitterContext(Auth)) { int lastCount = 199; var oldestId = ulong.MaxValue; while (lastCount > 1) { IQueryable<Status> statusTweets = twitter.Status.Where(tweet => tweet.Type == StatusType.User && tweet.ScreenName == UserName && tweet.IncludeMyRetweet == true && tweet.ExcludeReplies == false && tweet.Count == 199); if (oldestId != ulong.MaxValue) statusTweets = statusTweets.Where(t => t.MaxID == oldestId); if (sinceId != 0) statusTweets = statusTweets.Where(t => t.SinceID == sinceId); if (statusTweets != null) { var returned = statusTweets.ToList(); if (!returned.Any()) break; lastCount = returned.Count(); oldestId = returned.Min(t => ulong.Parse(t.StatusID)); returned.RemoveAt(returned.Count - 1); allTweets.AddRange(returned); } else { lastCount = 0; } } } return allTweets.Distinct().ToList(); }