public static void Start( ) { stream = Tweetinvi.Stream.CreateFilteredStream( ); stream.FilterLevel = FilterLevel; stream.MatchingTweetReceived += OnTweetReceived; stream.WarningFallingBehindDetected += WarningFallingBehind; stream.DisconnectMessageReceived += DisconnectedMessageReceived; foreach (string keyword in Keywords) { stream.AddTrack(keyword); } foreach (string language in Languages) { stream.AddTweetLanguageFilter(language); } foreach (Coordinates coord in Coords) { stream.AddLocation(coord, new Coordinates(coord.Latitude + 1.0, coord.Longitude + 1.0)); } TweetCount = 0; RateLimit.RateLimitTrackerMode = RateLimitTrackerMode.TrackAndAwait; Task streamAsync = Sync.ExecuteTaskAsync(() => stream.StartStreamMatchingAllConditionsAsync( )); }
public JsonResult StartStream(string[] list) { try { var keyword = list[0]; var path = list[1]; //var iterations = 100000; path = path + "\\" + "API_" + keyword + "_" + string.Format("{0:yyyy-MM-dd_hh-mm-ss-fff}", DateTime.Now) + ".txt"; object lock1 = new Object(); lock (lock1) { if (!System.IO.File.Exists(path)) { System.IO.File.Create(path); } } try{ if (t != null) { stream.StopStream(); } } catch (Exception e) { return(new JsonResult(new { success = true, responseText = "Failed to abort old thread" })); } this.t = new Thread(() => { this.stream = Tweetinvi.Stream.CreateFilteredStream(); if (keyword != "") { stream.AddTrack(keyword); } stream.MatchingTweetReceived += (sender, args) => { System.IO.File.AppendAllText(path, args.Json + "\n"); Console.WriteLine(args.Tweet); }; stream.StartStreamMatchingAllConditions(); Console.WriteLine("Stream started"); //stream.StopStream(); }); lock (lock1) { t.Start(); } return(new JsonResult(new { success = true, responseText = "Started stream for keyword" + keyword + ". Saving to file at location " + path + "." })); } catch (Exception e) { return(Json(new { success = false, responseText = "Exceptions occured while attempting to open stream." })); } }
public void callTweetApi(string searchTerm) { if (!string.IsNullOrEmpty(searchTermHolder)) { stream.RemoveTrack(searchTermHolder); stream.StopStream(); } searchTermHolder = searchTerm; stream.AddTrack(searchTerm); stream.AddTweetLanguageFilter(LanguageFilter.English); stream.MatchingTweetReceived += (sender, arguments) => { if (!(arguments.Tweet.Media == null || arguments.Tweet.Media.Count <= 0)) { foreach (var item in arguments.Tweet.Media) { if (item.MediaType == "photo" && arguments.MatchingTracks[0] == searchTermHolder) { try { List <FaceModel> faceList = WebApplication1.FaceApi.FaceApi.MakeAnalysisRequest(arguments.Tweet.Media[0].MediaURL).Result; tweet twt = new tweet(); twt.Text = arguments.Tweet.FullText; twt.MediaUrl = arguments.Tweet.Media[0].MediaURL; twt.CreatedAt = arguments.Tweet.CreatedAt; foreach (var gender in faceList) { if (gender.faceAttributes.gender == "male") { twt.MaleFace += 1; } else if (gender.faceAttributes.gender == "femail") { twt.FemailFace += 1; } } twt.MatchingTrack = arguments.MatchingTracks[0] + " - " + faceList.Count + " Face(s) Detected, " + twt.FemailFace + " female and " + twt.MaleFace + " male"; sendMessage(twt); } catch (System.Exception) { stream.ResumeStream(); } } } } }; stream.StartStreamMatchingAllConditions(); }
private void StartStreaming() { if (!TwitterAuthenticated) { return; } List <String> FilterStrings = Settings.GetValueFromConfig("Stream_FilterTrack").Split(',').ToList(); Filteredstream = Stream.CreateFilteredStream(); foreach (String filter in FilterStrings) { Filteredstream.AddTrack(filter); } Console.WriteLine("Filter tracks: " + String.Join("||", FilterStrings)); Filteredstream.MatchingTweetReceived += (sender2, args) => { ITweet tw = args.Tweet; ProcessTweet(tw); }; Filteredstream.StreamStarted += (sender2, args) => { Console.WriteLine("Stream started"); timer.Enabled = true; Task.Factory.StartNew(() => { GCS_SaveInNewThread(); }); }; Filteredstream.StreamStopped += (sender2, args) => { Console.WriteLine(args.Exception); Console.WriteLine(args.DisconnectMessage); timer.Stop(); timer.Enabled = false; Console.WriteLine("Restarting in 5 Second"); Thread.Sleep(5000); RestartStream(); }; timer.Elapsed += new ElapsedEventHandler(Timer_Elapsed); timer.Interval = 10000; RestartStream(); }
public void StartMonitoring(string query, EventHandler <Tweetinvi.Events.MatchedTweetReceivedEventArgs> callback) { try { tweetStream = Stream.CreateFilteredStream(); tweetStream.AddTrack(query); tweetStream.MatchingTweetReceived += callback; tweetStream.StartStreamMatchingAllConditions(); status = 0; } catch (Exception ex) { Debug.WriteLine("Error starting Twitter monitoring: " + ex.Message); status = -1; } }
public void StartStream() { if (_filteredStream == null) { // For Reply _filteredStream = Tweetinvi.Stream.CreateFilteredStream(); _filteredStream.AddTrack("@" + _botUser.ScreenName); _filteredStream.MatchingTweetReceived += OnMatchingTweetReceived; streamWorker.RunWorkerAsync(); logger.LogInformation("Twitter stream start"); } else { logger.LogWarning("Twitter stream already started"); } }
public void StartStream() { if (_filteredStream == null) { // For Reply _filteredStream = Tweetinvi.Stream.CreateFilteredStream(); _filteredStream.AddTrack("@" + _botUser.ScreenName); _filteredStream.StreamStarted += OnStreamStarted; _filteredStream.MatchingTweetReceived += OnMatchingTweetReceived; // TODO これに限らず例外処理と継続は見ておく _filteredStream.StartStreamMatchingAllConditionsAsync(); } else { Debug.WriteLine("Twitter stream already started"); } }
public void ConfigureStream() { stream.ClearFollows(); stream.ClearTracks(); foreach (Subscription s in _subRepo.Find(s => s.Event.Id == streamEvent.Id)) { if (s.Type == Common.SubType.TRACK.ToString()) { stream.AddTrack(s.Value); } else if (s.Type == Common.SubType.PERSON.ToString()) { stream.AddFollow(s.TwitterId); } } stream.MatchingTweetReceived += (sender, args) => { Models.User isBannedUser = _userRepo.Find(b => (b.UserId == args.Tweet.CreatedBy.Id) && b.Type == Common.BanType).SingleOrDefault(); if (isBannedUser != null) { return; } Models.Tweet newTweet = new Models.Tweet(args.Tweet.Id, args.Tweet.FullText, args.Tweet.CreatedBy.ScreenName, args.Tweet.CreatedAt.ToUniversalTime(), args.Tweet.CreatedBy.Name, args.Tweet.CreatedBy.ProfileImageUrlFullSize, streamEvent, args.Tweet.CreatedBy.Id); TwitterWall.Models.Tweet result = _tweetRepo.Find(obj => obj.TweetId == newTweet.TweetId && obj.Event.Id == streamEvent.Id).SingleOrDefault(); if (result != null) { return; } _tweetRepo.Add(newTweet); _mediaRepo.AddFromTweet(args.Tweet, streamEvent); }; stream.StreamStopped += (sender, args) => { var exceptionThatCausedTheStreamToStop = args.Exception; var twitterDisconnectMessage = args.DisconnectMessage; StreamManager.ConnectionManager.GetHubContext <TwitterHub>().Clients.All.streamStatusChanged("Stopped: " + args.Exception + ". " + args.DisconnectMessage); }; }
public void SetupStream() { SetupDb(); tweetParser = new TweetParser(); TweetinviConfig.CurrentThreadSettings.TweetMode = TweetMode.Extended; Auth.SetUserCredentials(_consumerKey, _consumerSecret, _accessToken, _accessTokenSecret); stream = Stream.CreateFilteredStream(); stream.AddTrack(query); stream.MatchingTweetReceived += (sender, args) => { tweetsList.Add(args.Tweet); var tweet = args.Tweet; var matchingTracks = args.MatchingTracks; var matchedOn = args.MatchOn; Debug.WriteLine(args.Tweet); }; Models.TweetCount counter = new Models.TweetCount(); counter.Key = COUNTERKEY; counter.Count = 0; tweetCounterCollection.InsertOne(counter); }