/// <summary> /// Parses mutual friends from two friendlists /// </summary> /// <param name="userList1"></param> /// <param name="userList2"></param> /// <returns>List of mutual friends</returns> public FacebookMutualFriends GetMutualFriends(FacebookFriendlist userList1, FacebookFriendlist userList2) { var mutualFriends = new FacebookMutualFriends { MutualFriends = userList1.Friends.Where(userList2.Friends.Contains).ToList(), }; mutualFriends.Participants.Add(userList1.Username); mutualFriends.Participants.Add(userList2.Username); return(mutualFriends); }
/// <summary> /// Parses usernames from urls. /// </summary> /// <param name="friendLinkList"></param> /// <param name="user"></param> /// <returns></returns> private static FacebookFriendlist ParseFriendlist(IEnumerable <IWebElement> friendLinkList, string user) { var friendList = new FacebookFriendlist() { Username = user }; // url contains username var regexNickname = new Regex(@"(https:\/\/www.facebook.com\/)(.*)(\?.*)"); // url contains user's id var regexId = new Regex(@"(https:\/\/www.facebook.com\/profile\.php\?id=)(.*)(&fref.*)"); foreach (var friend in friendLinkList) { var friendLink = friend.GetAttribute("href"); var match = regexNickname.Match(friendLink); if (!match.Success) { continue; } var friendId = match.Groups[2].Value; // some users dont have nickname, only id if (friendId == "profile.php") { match = regexId.Match(friendLink); friendId = match.Groups[2].Value; } if (!IsDuplicate(friendList.Friends, friendId)) { friendList.Friends.Add(friendId); } } return(friendList); }
public void Data_Mining_mutual() { var watch = new Stopwatch(); // clean up GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); var friendlist1 = new FacebookFriendlist { Username = "******" }; friendlist1.Friends.Add("friend1"); friendlist1.Friends.Add("friend2"); friendlist1.Friends.Add("friend3"); friendlist1.Friends.Add("friend4"); friendlist1.Friends.Add("friend5"); friendlist1.Friends.Add("friend6"); friendlist1.Friends.Add("friend7"); friendlist1.Friends.Add("friend8"); friendlist1.Friends.Add("friend9"); friendlist1.Friends.Add("friend10"); friendlist1.Friends.Add("friend11"); friendlist1.Friends.Add("friend12"); friendlist1.Friends.Add("friend13"); friendlist1.Friends.Add("friend14"); friendlist1.Friends.Add("friend15"); friendlist1.Friends.Add("friend16"); friendlist1.Friends.Add("friend17"); friendlist1.Friends.Add("friend18"); friendlist1.Friends.Add("friend19"); friendlist1.Friends.Add("friend111"); friendlist1.Friends.Add("friend112"); friendlist1.Friends.Add("friend113"); friendlist1.Friends.Add("friend114"); friendlist1.Friends.Add("friend115"); var friendlist2 = new FacebookFriendlist { Username = "******" }; friendlist1.Friends.Add("friend1"); friendlist1.Friends.Add("xfriend2"); friendlist1.Friends.Add("friend3"); friendlist1.Friends.Add("xfriend4"); friendlist1.Friends.Add("friend5"); friendlist1.Friends.Add("xfriend6"); friendlist1.Friends.Add("friend7"); friendlist1.Friends.Add("xfriend8"); friendlist1.Friends.Add("friend9"); friendlist1.Friends.Add("xfriend10"); friendlist1.Friends.Add("friend11"); friendlist1.Friends.Add("xfriend12"); friendlist1.Friends.Add("friend13"); friendlist1.Friends.Add("xfriend14"); friendlist1.Friends.Add("friend15"); friendlist1.Friends.Add("xfriend16"); friendlist1.Friends.Add("friend17"); friendlist1.Friends.Add("xfriend18"); friendlist1.Friends.Add("friend19"); friendlist1.Friends.Add("xfriend111"); friendlist1.Friends.Add("friend112"); friendlist1.Friends.Add("xfriend113"); friendlist1.Friends.Add("friend114"); friendlist1.Friends.Add("xfriend115"); watch.Start(); var miner = new SnooperFacebookMining(true); for (var i = 0; i < 10; i++) { miner.GetMutualFriends(friendlist1, friendlist2); } miner.QuitMining(); watch.Stop(); Debug.WriteLine(@"Benchmark mutual: {0} ms", watch.Elapsed.TotalMilliseconds); }
/// <summary> /// Parses mutual friends from mutual list and friendlist /// </summary> /// <param name="mutualList"></param> /// <param name="userList"></param> /// <returns>Mutual friends</returns> public FacebookMutualFriends GetMutualFriends(FacebookMutualFriends mutualList, FacebookFriendlist userList) { var mutualFriends = new FacebookMutualFriends { MutualFriends = mutualList.MutualFriends.Where(userList.Friends.Contains).ToList() }; mutualFriends.Participants.Add(userList.Username); foreach (var participant in mutualList.Participants) { mutualFriends.Participants.Add(participant); } return(mutualFriends); }