public void LogToConsole(Models.Statistics statistics) { Console.SetCursorPosition(0, 2); Console.WriteLine("TotalNumberOfTweetsReceived: " + statistics.TotalNumberOfTweetsReceived); Console.WriteLine("AverageTweetsPerHour: " + statistics.AverageTweetsPerHour); Console.WriteLine("AverageTweetsPerMinute: " + statistics.AverageTweetsPerMinute); Console.WriteLine("AverageTweetsPerSecond: " + statistics.AverageTweetsPerSecond); Console.WriteLine("TopEmojis: " + statistics.Emojis.OrderByDescending(x => x.Value).FirstOrDefault()); Console.WriteLine("PercentOfTweetsThatContainEmojis: " + statistics.PercentOfTweetsThatContainEmojis); Console.WriteLine("TopHashTags: " + statistics.HashTags.OrderByDescending(x => x.Value).FirstOrDefault()); Console.WriteLine("PercentOfTweetsThatContainUrl: " + statistics.PercentOfTweetsThatContainUrl); Console.WriteLine("PercentOfTweetsThatContainPhotoUrl: " + statistics.PercentOfTweetsThatContainPhotoUrl); Console.WriteLine("TopDomainsOfUrlsInTweets: " + statistics.Urls.OrderByDescending(x => x.Value).FirstOrDefault()); }
public async IAsyncEnumerable <Models.Statistics> AnalyzeTwitterStream() { List <Models.Shared.Emoji> emojis = await Shared.Emojis.GetEmojiLibraryAsync(); Authentication authentication = new Authentication(); await authentication.TokenAsync(); SampledStream sampledStream = new SampledStream(); Models.Statistics statistics = new Models.Statistics(); Shared.Twitter twitter = new Shared.Twitter(); await foreach (Models.TwitterApi.Tweet tweet in sampledStream.GetSampledStreamAsync(authentication.Token)) { if (tweet != null) { twitter.ProcessTweet(tweet, emojis, statistics); yield return(statistics); } } }
/*===============================*\ |* Constructeurs *| \*===============================*/ /// <summary> /// Constructeur par défaut /// </summary> public Statistics() { this.model = new Models.Statistics(); }
public void ProcessTweet(Models.TwitterApi.Tweet tweet, List <Models.Shared.Emoji> emojis, Models.Statistics statistics) { List <Models.Shared.Emoji> emoticons = tweet.Data.Text.GetEmojis(emojis); foreach (Models.Shared.Emoji emoji in emoticons) { Extensions.AddOrUpdateUniqueCollection(statistics.Emojis, emoji.Name, (ulong)emoticons.Count(x => x.Name == emoji.Name)); } Dictionary <string, ulong> hashtags = tweet.Data.Text.CountStringPatternsEndsWithSpace(new string[] { "#" }); foreach (KeyValuePair <string, ulong> item in hashtags) { Extensions.AddOrUpdateUniqueCollection(statistics.HashTags, item.Key, item.Value); } Dictionary <string, ulong> urls = tweet.Data.Text.CountStringPatternsEndsWithSpace(new string[] { @"http://", @"https://" }); foreach (KeyValuePair <string, ulong> item in urls) { Extensions.AddOrUpdateUniqueCollection(statistics.Urls, item.Key, item.Value); } if (emoticons.Count > 0) { statistics.NumberOfTweetsThatContainEmojis++; } if (tweet.Data.Text.ContainsUrl()) { statistics.NumberOfTweetsThatContainUrl++; } if (tweet.Data.Text.Contains("pic.twitter.com") || tweet.Data.Text.Contains("Instagram")) { statistics.NumberOfTweetsThatContainPhotoUrl++; } statistics.TotalNumberOfTweetsReceived++; }