private static TwitterHandle GetPopulatedHandleFromUser(IUser user, string category) { var h = new TwitterHandle(user.ScreenName) { Name = user.Name, ImgUrl = user.ProfileImageUrl, Followers = user.FollowersCount, Friends = user.FriendsCount, Location = GetLocation(user), Website = GetWebsite(user), Category = category, Bio = TidyUpBio(GetBio(user)) }; var numberOfTweets = 200; ITweet[] tweets; try { WaitToScore(); tweets = GetUserTimelineTweets(user, numberOfTweets); } catch (Exception e) { var errorMessage = string.Format("Error getting populated handle '{0}' : {1}", user.ScreenName, e.Message); Console.WriteLine(errorMessage); return(InvisibleUser); } if (tweets.Length != numberOfTweets) // in case the account doesn't have the required amount { if (tweets.Length == 0) { return(InvisibleUser); } numberOfTweets = tweets.Length; } var totalRetweets = 0; var totalFavourites = 0; foreach (var t in tweets) { if (!t.IsRetweet) { totalRetweets += t.RetweetCount; } totalFavourites += t.FavouriteCount; } h.RetweetRate = (totalRetweets / numberOfTweets) + 1; h.FavouriteRate = (totalFavourites / numberOfTweets) + 1; h.Score = ComputeScore(h); return(h); }
/// <summary> /// Needs more work. /// </summary> /// <param name="h"></param> /// <returns></returns> private static double ComputeScore(TwitterHandle h) { var score = Math.Pow(h.RetweetRate, 2) + h.FavouriteRate + h.Friends / 100 + (h.Followers / 1000); return(score); }