private static void DoMining() { using (var db = new TwitterDataContext(_connStr)) { var devTwitters = (from d in db.DevTwitterAccounts select d).ToList(); foreach (var devAccount in devTwitters) { ListTweetsOnListOptions listTweetOptions = new ListTweetsOnListOptions(); var service = new TwitterService(CONSUMER_KEY, CONSUMER_SECRET); service.AuthenticateWith(ACCESS_TOKEN, ACCESS_SECRET); var currentTweets = service.ListTweetsOnUserTimeline( new ListTweetsOnUserTimelineOptions() { Count = 20, ExcludeReplies = false, IncludeRts = false, ScreenName = "@" + devAccount.DevTwitterName, SinceId = null, MaxId = null }); foreach (var tweet in currentTweets) { List<TwitterStatus> tweetsToInsert = new List<TwitterStatus>(); int? convIdToAddTo = null; //We are basically going to keep on getting the reply-to tweets. var currentTweet = tweet; while (true) { if (currentTweet == null) break; List<Tweet> tweetExists; tweetExists = (from t in db.Tweets where t.TweetTwitterId == currentTweet.Id select t).ToList(); if (tweetExists.Count > 0) { convIdToAddTo = tweetExists[0].TwitterConversationId; break; } else { tweetsToInsert.Add(currentTweet); } if (currentTweet.InReplyToStatusId != null) { currentTweet = service.GetTweet( new GetTweetOptions() { Id = currentTweet.InReplyToStatusId.Value }); } else { break; } } if (tweetsToInsert.Count > 0) { tweetsToInsert = tweetsToInsert.OrderBy(x => x.CreatedDate).ToList(); if (convIdToAddTo == null) { string title = String.Empty; if (tweetsToInsert[0].Text.Length > 60) { for (int i = 0; i < 60; i++) { title += tweetsToInsert[0].Text[i]; } title += " (...)"; } else { title = tweetsToInsert[0].Text; } TwitterConversation conversation = new TwitterConversation(); conversation.TwitterConvTitle = title; conversation.LastBlueResponder = tweet.Author.ScreenName; conversation.LastDevResponseDate = tweet.CreatedDate; conversation.TwitterConvAuthor = tweetsToInsert[0].Author.ScreenName; conversation.BlizzAreaId = (from t in tweetsToInsert from d in db.DevTwitterAccounts where d.DevTwitterName.ToLower() == t.Author.ScreenName.ToLower() select d.BlizzAreaId).ToList()[0]; foreach (var twitterTweet in tweetsToInsert) { Tweet bpTweet = new Tweet(); try { var devTwitter = (from d in db.DevTwitterAccounts where d.DevTwitterName == twitterTweet.Author.ScreenName.Replace("@", "") select d).Single(); bpTweet.DevId = devTwitter.DevId; } catch (InvalidOperationException) { /*Then we simply leave DevId as null.*/ } bpTweet.TweetContent = twitterTweet.TextAsHtml; bpTweet.TweetDate = twitterTweet.CreatedDate; bpTweet.TweetTwitterId = twitterTweet.Id; bpTweet.TwitterUserName = twitterTweet.Author.ScreenName; bpTweet.TweetContentNonHtml = twitterTweet.Text; bpTweet.UserAvatarUrl = twitterTweet.Author.ProfileImageUrl; conversation.LastDevResponseDate = twitterTweet.CreatedDate; bpTweet.TwitterInResponseToId = twitterTweet.InReplyToStatusId; conversation.Tweets.Add(bpTweet); } db.TwitterConversations.InsertOnSubmit(conversation); db.SubmitChanges(); } else { foreach (var twitterTweet in tweetsToInsert) { Tweet bpTweet = new Tweet(); try { var devTwitter = (from d in db.DevTwitterAccounts where d.DevTwitterName == twitterTweet.Author.ScreenName.Replace("@", "") select d).Single(); bpTweet.DevId = devTwitter.DevId; } catch (InvalidOperationException) { /*Then we simply leave DevId as null.*/ } bpTweet.TweetContent = twitterTweet.TextAsHtml; bpTweet.TweetDate = twitterTweet.CreatedDate; bpTweet.TweetTwitterId = twitterTweet.Id; bpTweet.TwitterUserName = twitterTweet.Author.ScreenName; bpTweet.TwitterConversationId = convIdToAddTo.Value; bpTweet.TweetContentNonHtml = twitterTweet.Text; bpTweet.UserAvatarUrl = twitterTweet.Author.ProfileImageUrl; bpTweet.TwitterInResponseToId = twitterTweet.InReplyToStatusId; var conversation = db.TwitterConversations.Where(x => x.Id == convIdToAddTo).Single(); conversation.LastDevResponseDate = twitterTweet.CreatedDate; db.Tweets.InsertOnSubmit(bpTweet); db.SubmitChanges(); } } } } } } }
public virtual void ListTweetsOnList(ListTweetsOnListOptions options, Action<IEnumerable<TwitterStatus>, TwitterResponse> action) { var list_id = options.ListId; var slug = options.Slug; var owner_screen_name = options.OwnerScreenName; var owner_id = options.OwnerId; var since_id = options.SinceId; var max_id = options.MaxId; var count = options.Count; var include_entities = options.IncludeEntities; var include_rts = options.IncludeRts; WithHammock(action, "lists/statuses", FormatAsString, "?list_id=", list_id, "&slug=", slug, "&owner_screen_name=", owner_screen_name, "&owner_id=", owner_id, "&since_id=", since_id, "&max_id=", max_id, "&count=", count, "&include_entities=", include_entities, "&include_rts=", include_rts); }
public virtual Task<TwitterResponse<IEnumerable<TwitterStatus>>> ListTweetsOnListAsync(ListTweetsOnListOptions options) { var list_id = options.ListId; var slug = options.Slug; var owner_screen_name = options.OwnerScreenName; var owner_id = options.OwnerId; var since_id = options.SinceId; var max_id = options.MaxId; var count = options.Count; var include_entities = options.IncludeEntities; var include_rts = options.IncludeRts; return ExecuteRequest<IEnumerable<TwitterStatus>>("lists/statuses", FormatAsString, "?list_id=", list_id, "&slug=", slug, "&owner_screen_name=", owner_screen_name, "&owner_id=", owner_id, "&since_id=", since_id, "&max_id=", max_id, "&count=", count, "&include_entities=", include_entities, "&include_rts=", include_rts); }
public virtual IAsyncResult BeginListTweetsOnList(ListTweetsOnListOptions options) { var list_id = options.ListId; var slug = options.Slug; var owner_screen_name = options.OwnerScreenName; var owner_id = options.OwnerId; var since_id = options.SinceId; var max_id = options.MaxId; var count = options.Count; var include_entities = options.IncludeEntities; var include_rts = options.IncludeRts; return BeginWithHammock<IEnumerable<TwitterStatus>>(WebMethod.Get, "lists/statuses", FormatAsString, "?list_id=", list_id, "&slug=", slug, "&owner_screen_name=", owner_screen_name, "&owner_id=", owner_id, "&since_id=", since_id, "&max_id=", max_id, "&count=", count, "&include_entities=", include_entities, "&include_rts=", include_rts); }
public static List <TwitterItem> getListItems( TwitterService service, AccountTwitter account, string username, string listNameOrId, decimal listId, string slug, decimal sinceId, DoWorkEventArgs e) { IEnumerable <TwitterStatus> tweets; List <TwitterItem> allTweets = new List <TwitterItem>(); try { if (service == null) { return(new List <TwitterItem>()); } ListTweetsOnListOptions options = new TweetSharp.ListTweetsOnListOptions(); options.Slug = slug; options.ListId = Convert.ToInt64(listId); options.OwnerScreenName = username; service.TraceEnabled = true; options.Count = Properties.Settings.Default.TwitterItemsFetchInPast; if (sinceId > 0) { options.SinceId = Convert.ToInt64(sinceId); } IAsyncResult result = service.BeginListTweetsOnList(options); tweets = service.EndListTweetsOnList(result); if (tweets != null) { foreach (TwitterStatus status in tweets) { if (e != null) { if (e.Cancel) { AppController.Current.Logger.writeToLogfile("Cancel received for timeline"); break; } } if (status.Id < Convert.ToInt64(sinceId)) { continue; } else { TwitterItem item = API.TweetSharpConverter.getItemFromStatus(status, account); if (item != null) { item.SourceListId = listId; allTweets.Add(item); } } } } else { TwitterError error = service.Response.Error; Console.WriteLine(); } } catch (Exception exp) { TwitterError error = service.Response.Error; AppController.Current.sendNotification("ERROR", exp.Message, exp.StackTrace, "", null); } return(allTweets); }