public async Task <SampleStream> StartAsync() { this.IsRunning = true; this.filteredStream.MatchingTweetReceived += (sender, args) => { if (args.Tweet.IsRetweet) { return; } var tweet = new Model.Tweet { StrId = args.Tweet.IdStr, FullText = args.Tweet.FullText, CreatedAt = args.Tweet.CreatedAt, FavoriteCount = args.Tweet.FavoriteCount, Favorited = args.Tweet.Favorited, QuoteCount = 0, ReplyCount = 0, RetweetCount = args.Tweet.RetweetCount, IsRetweet = args.Tweet.IsRetweet, User = new Model.User { CreatedAt = args.Tweet.CreatedBy.CreatedAt, FavouritesCount = args.Tweet.CreatedBy.FavouritesCount, FollowersCount = args.Tweet.CreatedBy.FollowersCount, FriendsCount = args.Tweet.CreatedBy.FriendsCount, ListedCount = args.Tweet.CreatedBy.ListedCount, StatusesCount = args.Tweet.CreatedBy.StatusesCount, Verified = args.Tweet.CreatedBy.Verified, ProfileImageUrl400x400 = args.Tweet.CreatedBy.ProfileImageUrl400x400, ScreenName = args.Tweet.CreatedBy.ScreenName, Name = args.Tweet.CreatedBy.Name } }; this.Queue.Add(new ScoredItem(tweet)); }; await this.filteredStream.StartStreamMatchingAllConditionsAsync(); return(this); }
private Model.Tweet MapTweetinviTweetToTweet(ITweet tweet) { bool valid = true; if (tweet == null) { Console.WriteLine("TwitterMonitor.MapTweetinviTweetToTweet(): tweet is null"); valid = false; } if (valid && string.IsNullOrEmpty(tweet.FullText)) { Console.WriteLine("TwitterMonitor.MapTweetinviTweetToTweet(): tweet is not valid (No text)"); valid = false; } if (!valid) { Console.WriteLine("TwitterMonitor.MapTweetinviTweetToTweet(): found invalid tweet. Ignore."); return(null); } var domainTweet = new Model.Tweet { Id = tweet.IdStr, //Guid.NewGuid().ToString("N"), Content = m_HtmlStripper.UnHtml(tweet.FullText), Created = tweet.CreatedAt.ToUniversalTime(), Url = tweet.Url, AuthorId = tweet.CreatedBy.UserIdentifier.IdStr, }; foreach (var entity in tweet.Entities.Hashtags) { domainTweet.TextualEntities[Model.TweetEntityTextualType.Hashtags].Add(entity.Text); } foreach (var entity in tweet.Entities.Medias) { if (entity.MediaType == "photo") { domainTweet.MediaEntities[Model.TweetEntityMediaType.Image].Add(entity.MediaURL); } else if (entity.MediaType == "video") { // Get the highest quality video int mediaIndex = 0; int maxBitrate = 0; for (int i = 0; i < entity.VideoDetails.Variants.Length; i++) { if (entity.VideoDetails.Variants[i].Bitrate > maxBitrate) { mediaIndex = i; maxBitrate = entity.VideoDetails.Variants[i].Bitrate; } } domainTweet.MediaEntities[Model.TweetEntityMediaType.Video].Add(entity.VideoDetails.Variants[mediaIndex].URL); } else if (entity.MediaType == "animated_gif") { domainTweet.MediaEntities[Model.TweetEntityMediaType.AnimatedGif].Add(entity.VideoDetails.Variants[0].URL); } else { } } foreach (var entity in tweet.Entities.Symbols) { domainTweet.TextualEntities[Model.TweetEntityTextualType.Symbols].Add(entity.Text); } foreach (var entity in tweet.Entities.Urls) { domainTweet.TextualEntities[Model.TweetEntityTextualType.Urls].Add(entity.ExpandedURL); } foreach (var entity in tweet.Entities.UserMentions) { domainTweet.TextualEntities[Model.TweetEntityTextualType.UserMentions].Add(entity.IdStr); } return(domainTweet); }