public ActionResult TwitterStream() { var person = (PersonModel)TempData["Person"]; var tweet = (int?)TempData["Tweet"]; var users = (List <PersonModel>)TempData["UserList"]; TwitterStreamModel model = new TwitterStreamModel(); if (tweet != null) { model.CurrentTweet = BL.GetTweetById(tweet.Value); } if (users != null) { model.PersonList = users; } if (person != null) { model.Person = (PersonModel)TempData["Person"]; } else if (UserContext.Person != null) { model.Person = UserContext.Person; } model.TweetList = BL.GetTweet(model.Person); model.PersonList = BL.GetPerson(UserContext.Person.UserId, model.SearchText); return(View(model)); }
public ActionResult TwitterStream(TwitterStreamModel model) { if (!string.IsNullOrEmpty(model.CurrentTweet.Message)) { model.CurrentTweet.UserId = model.Person.UserId; BL.AddTweet(model.CurrentTweet); } else { TempData["UserList"] = BL.GetPerson(model.Person.UserId, model.SearchText); } return(RedirectToAction("TwitterStream")); }
private async void DoWork(object state) { _logger.LogInformation("===========> TwitterStreamCountUpdate Service is working."); await Task.Delay(Config.Parameter.TwitterStreamCountTaskDelay *1000); try { using (var db = new LiteDatabase("TwitterData.db")) { // Get Datbase Connection var colTS = db.GetCollection <TwitterStreamModel>("TwitterStream"); //Breaks why? - - If there is nothing to update? var willBeUpdated = colTS.FindAll().Where(s => s.TweetCreatedAt > DateTime.Now.AddHours(Config.Parameter.TwitterStreamCountUpdateLastHours)); if (willBeUpdated != null) { foreach (var x in willBeUpdated) { var tweet = Tweetinvi.Tweet.GetTweet(x.TweetID); if (tweet != null) { var tweetModel = new TwitterStreamModel { TweetID = tweet.Id, TweetUserID = tweet.CreatedBy.Id, TweetUser = tweet.CreatedBy.ScreenName, TweetUserName = tweet.CreatedBy.Name, TweetUserDesc = tweet.CreatedBy.Description, TweetUserPicture = tweet.CreatedBy.ProfileImageUrlHttps, TweetCreatedAt = tweet.CreatedAt, TweetText = tweet.Text, TweetHashtags = tweet.Hashtags, TweetReTweetCount = tweet.RetweetCount, TweetFavoriteCount = tweet.FavoriteCount, TweetUrl = tweet.Url }; _logger.LogInformation(">> Updated Counts for " + x.TweetID); colTS.Update(tweetModel); } await Task.Delay(Config.Parameter.TwitterStreamCountWriteDelay * 1000); } } } } catch (TwitterException ex) { _logger.LogInformation("Twitter has problems..." + ex); } catch (ArgumentException ex) { _logger.LogInformation("ArgumentException..." + ex); } catch (LiteException ex) { _logger.LogInformation("LiteDB Exception..." + ex); } catch (Exception ex) { _logger.LogInformation("Exception..." + ex); } }
private static void InsertNewUserDaily() { IEnumerable <TwitterUserDailyModel> update; IEnumerable <TwitterStreamModel> update2; try { Console.WriteLine("How many past days do you want to Input...?"); var days = Convert.ToInt16(Console.ReadLine()); Console.WriteLine("Which Data Collection do you want to use...?\n1 - TwitterUserDaily\n2 - TwitterStream "); var collection = Convert.ToInt16(Console.ReadLine()); try { using (var db2 = new LiteDatabase("TwitterData2.db")) using (var db1 = new LiteDatabase("TwitterData.db")) { if (collection == 1) { var from = db2.GetCollection <TwitterUserDailyModel>("TwitterUserDaily"); update = from.FindAll().Where(s => s.DateToday == DateTime.Today.AddDays(-days)); var updatecheck = from.FindAll(); Console.WriteLine("Do you want to update... " + "\n" + update.Count() + "\t" + DateTime.Today.AddDays(-1) + "\n" + updatecheck.Count() + "\t" + DateTime.Today + "\n Press enter if YES!"); Console.ReadKey(); var to = db1.GetCollection <TwitterUserDailyModel>("TwitterUserDaily"); foreach (var x in update) { Console.WriteLine("Insert>" + x.Id); var twitterUserDaily = new TwitterUserDailyModel { Id = x.Id, Screen_name = x.Screen_name, Statuses_count = x.Statuses_count, Followers_count = x.Followers_count, Friends_count = x.Friends_count, Favourites_count = x.Favourites_count, Listed_count = x.Listed_count, DateToday = x.DateToday, TwitterId = x.Id, TwitterName = x.TwitterName }; to.Upsert(twitterUserDaily); } } if (collection == 2) { var from = db2.GetCollection <TwitterStreamModel>("TwitterStream"); update2 = from.FindAll().Where(s => s.TweetCreatedAt > DateTime.Now.AddDays(-days)); var updatecheck = from.FindAll(); Console.WriteLine("Do you want to update... " + "\n" + update2.Count() + "\t" + DateTime.Today.AddDays(-1) + "\n" + updatecheck.Count() + "\t" + DateTime.Today + "\n Press enter if YES!"); Console.ReadKey(); var to = db1.GetCollection <TwitterStreamModel>("TwitterStream"); foreach (var x in update2) { Console.WriteLine("Insert>" + x.TweetID); var twitterStream = new TwitterStreamModel { TweetID = x.TweetID, TweetUser = x.TweetUser, TweetUserName = x.TweetUserName, TweetUserID = x.TweetUserID, TweetUserPicture = x.TweetUserPicture, TweetUserDesc = x.TweetUserDesc, TweetText = x.TweetText, TweetHashtags = x.TweetHashtags, TweetReTweetCount = x.TweetReTweetCount, TweetFavoriteCount = x.TweetFavoriteCount, TweetCreatedAt = x.TweetCreatedAt, TweetUrl = x.TweetUrl }; to.Upsert(twitterStream); } } Console.WriteLine("=>>>> DB updated...."); } } catch (LiteException ex) { Console.WriteLine("=>>> fixing Lite DB error", ex); } } catch (Exception ex) { Console.WriteLine("=>>> error", ex); } Console.ReadKey(); return; }
private void DoWork(object state) { _logger.LogInformation("===========> TwitterUserData Service - " + DateTime.Now.ToString("dd.MM.yy - hh:mm")); try { using (var db = new LiteDatabase("TwitterData.db")) { // Get Datbase Connection var colTS = db.GetCollection <TwitterStreamModel>("TwitterStream"); //Check for Rate Limits RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait; RateLimit.QueryAwaitingForRateLimit += (sender, args) => { _logger.LogInformation("===========> Is awaiting for rate limits... " + args.Query); }; //Get TwitterList var list = Tweetinvi.TwitterList.GetExistingList(Config.Parameter.ListName, Config.Parameter.ScreenName); //Sometimes Null Reference - - find way to catch and restart stream //Make own Method?!? //What the f**k... if (list.GetMembers(list.MemberCount) != null) { var AllMembers = list.GetMembers(list.MemberCount); AllListMembers = AllMembers; _logger.LogInformation("===========> Member to Follow: " + AllListMembers.Count()); } else { _logger.LogInformation("!!!> Problem with Tweetinvi "); //Do something } //Create new Stream var stream = Tweetinvi.Stream.CreateFilteredStream(); _logger.LogInformation("===========> Start UserStreams"); //Foreach Member in List addfollow stream foreach (var item in AllListMembers.Select((value, index) => new { value, index })) { stream.AddFollow(item.value.UserIdentifier); //_logger.LogInformation("{1} Added User {0} to stream...", item.value.UserIdentifier, item.index); } // Get notfified about shutdown of the stream stream.StallWarnings = true; //Only Match the addfollows stream.MatchOn = MatchOn.Follower; #region stream.KeepAliveReceived += async(sender, args) => { Config.Parameter.StreamState = Convert.ToString(stream.StreamState); await Task.Delay(1); }; //Check if this is firing stream.StreamStarted += async(sender, args) => { _logger.LogWarning("===========> Stream has started..."); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); _logger.LogInformation("#### StreamState #### => " + stream.StreamState); await Task.Delay(1); }; stream.StreamResumed += async(sender, args) => { _logger.LogWarning("===========> Resumded to stream..."); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); _logger.LogInformation("#### StreamState #### => " + stream.StreamState); await Task.Delay(1); }; stream.StreamStopped += async(sender, args) => { var exceptionThatCausedTheStreamToStop = args.Exception; var twitterDisconnectMessage = args.DisconnectMessage; _logger.LogWarning("===========> Stream has stopped unexpectedly..." + exceptionThatCausedTheStreamToStop + "\n" + twitterDisconnectMessage); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); _logger.LogInformation("#### StreamState #### => " + stream.StreamState); await Task.Delay(1); _logger.LogInformation("===========> Restarting stream in 20 sec. "); await Task.Delay(20 * 1000); stream.StartStreamMatchingAllConditions(); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); _logger.LogInformation("#### StreamState #### => " + stream.StreamState); }; stream.WarningFallingBehindDetected += async(sender, args) => { _logger.LogWarning("===========> Stream Warning... " + args.WarningMessage); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); await Task.Delay(1); }; stream.UnmanagedEventReceived += async(sender, args) => { _logger.LogWarning("===========> Stream UnmanagedEventReceived... " + args.JsonMessageReceived); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); await Task.Delay(1); }; stream.LimitReached += async(sender, args) => { _logger.LogWarning("===========> Stream Warning... " + args.NumberOfTweetsNotReceived); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); await Task.Delay(1); }; stream.DisconnectMessageReceived += async(sender, args) => { _logger.LogWarning("===========> Stream got disconnected... " + args.DisconnectMessage); stream.StopStream(); await Task.Delay(5 * 60 * 1000); stream.StartStreamMatchingAllConditions(); _logger.LogWarning("!RESTART!===========> Stream restarted at " + DateTime.Now); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); await Task.Delay(1); }; #endregion stream.MatchingTweetReceived += async(sender, args) => { if (args.MatchOn == stream.MatchOn) { if (args.Tweet.IsRetweet == true) { _logger.LogInformation(">> Skipped ReTweet..."); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); } else { var tweet = Tweet.GetTweet(args.Tweet.Id); if (tweet.ExtendedTweet != null) { var tweetDB = new TwitterStreamModel { //Tweet Details TweetID = tweet.Id, TweetUserID = tweet.CreatedBy.Id, TweetUser = tweet.CreatedBy.ScreenName, TweetUserName = tweet.CreatedBy.Name, TweetUserDesc = tweet.CreatedBy.Description, TweetUserPicture = tweet.CreatedBy.ProfileImageUrlHttps, TweetCreatedAt = tweet.CreatedAt, TweetText = tweet.ExtendedTweet.Text, TweetHashtags = tweet.ExtendedTweet.LegacyEntities.Hashtags, TweetReTweetCount = tweet.RetweetCount, TweetFavoriteCount = tweet.FavoriteCount, TweetUrl = tweet.Url }; _logger.LogInformation(">> New ExtendedTweet posted..." + tweet.Id); //Insert Tweet in DB colTS.Insert(tweetDB); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); } else { var tweetDB = new TwitterStreamModel { //Tweet Details TweetID = tweet.Id, TweetUserID = tweet.CreatedBy.Id, TweetUser = tweet.CreatedBy.ScreenName, TweetUserName = tweet.CreatedBy.Name, TweetUserDesc = tweet.CreatedBy.Description, TweetUserPicture = tweet.CreatedBy.ProfileImageUrlHttps, TweetCreatedAt = tweet.CreatedAt, TweetText = tweet.Text, TweetHashtags = tweet.Hashtags, TweetReTweetCount = tweet.RetweetCount, TweetFavoriteCount = tweet.FavoriteCount, TweetUrl = tweet.Url }; _logger.LogInformation(">> New Tweet posted..." + tweet.Id); //Insert Tweet in DB colTS.Insert(tweetDB); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); } } } else { _logger.LogInformation(">> Tweet not matched..." + args.Tweet.Id); Config.Parameter.StreamState = Convert.ToString(stream.StreamState); } }; stream.StartStreamMatchingAllConditions(); } } catch (TwitterException ex) { _logger.LogInformation("Twitter has problems..." + ex); } catch (ArgumentException ex) { _logger.LogInformation("ArgumentException..." + ex); } catch (LiteException ex) { _logger.LogInformation("LiteDB Exception..." + ex); } catch (Exception ex) { _logger.LogInformation("Exception..." + ex); //Do Something } }