public List<string> GetNonFollowingsBeforeSpecifiedDate(int noOfDays, ref TweetAccountManager AcManger) { TwitterDataScrapper followingScrapper = new TwitterDataScrapper(); string status = string.Empty; followingScrapper.CounterDataNo = noOfUnfollows; List<string> followers = followingScrapper.GetFollowers_New(AcManger.Screen_name, out status, ref AcManger.globusHttpHelper); List<string> followings = followingScrapper.GetFollowings_New(AcManger.Screen_name, out status, ref AcManger.globusHttpHelper); List<string> nonFollowings = followings.Except(followers).ToList(); List<string> requiredNonFollowingList = new List<string>(); ///Get list of Already Followings clsDBQueryManager queryManager = new clsDBQueryManager(); DataTable dt_AlreadyFollowed = queryManager.SelectFollowData(Username); foreach (DataRow item in dt_AlreadyFollowed.Rows) { string user_AlreadyFollowed = item["following_id"].ToString(); if (nonFollowings.Exists(s => ((s.Split(':')[0]) == user_AlreadyFollowed))) { DateTime dt_Now = DateTime.Today; string DateFollowed = item["DateFollowed"].ToString(); DateTime dt_DateFollowed1 = Convert.ToDateTime(DateFollowed); //DateTime dt_DateFollowed = DateTime.Parse(String.Format("{0:d/M/yyyy HH:mm:ss}", dt_DateFollowed1)); DateTime dt_DateFollowed = dt_DateFollowed1; TimeSpan dt_Difference = dt_Now.Subtract(dt_DateFollowed); double dt_Difference1 = dt_Difference.Days; if (dt_Difference.Days >= noOfDays) { requiredNonFollowingList.Add(user_AlreadyFollowed); } } } return requiredNonFollowingList; }
private void StartUnFollowingMultithreaded(object parameters) { try { Array paramsArray = new object[2]; paramsArray = (Array)parameters; int NoOfFollwos = 0; KeyValuePair<string, TweetAccountManager> keyValue = (KeyValuePair<string, TweetAccountManager>)paramsArray.GetValue(0); string NofUnfollows = (string)paramsArray.GetValue(1); if (!string.IsNullOrEmpty(NofUnfollows) && NumberHelper.ValidateNumber(NofUnfollows)) { NoOfFollwos = Int32.Parse(NofUnfollows); } //string userIDToFollow = (string)paramsArray.GetValue(1); List<string> list_userIDsToFollow = new List<string>(); TweetAccountManager tweetAccountManager = keyValue.Value; AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ Unfollowing Process Started For Account : " + keyValue.Key + " ]"); //Add to Threads Dictionary AddThreadToDictionary(strModule(Module.Unfollow), tweetAccountManager.Username); tweetAccountManager.unFollower.logEvents.addToLogger += new EventHandler(logEvents_UnFollower_addToLogger); tweetAccountManager.logEvents.addToLogger += logEvents_UnFollower_addToLogger; if (!tweetAccountManager.IsLoggedIn) { tweetAccountManager.Login(); } if (!tweetAccountManager.IsLoggedIn) { AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ Not Logged In With Account : " + keyValue.Key + " ]"); return; } //AddToLog_Unfollow("Checking for Persons Not Followed Back"); //Check Test box and anf useing feature box is checked if (!string.IsNullOrWhiteSpace(txt_FilePathunfollowUserslist.Text)) { AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ Wait process is running. ]"); //get user deatils from list clsDBQueryManager queryManager = new clsDBQueryManager(); DataTable dt_AlreadyFollowed = queryManager.SelectFollowData(tweetAccountManager.Username); foreach (string item in frmMain_NewUI.lst_unfolloweruserlist) { try { if (chk_dontCheckDbForUnfollow.Checked == false) { try { if (GlobusRegex.ValidateNumber(item)) { continue; } string Status = string.Empty; String UserTimelinePageSource = tweetAccountManager.globusHttpHelper.getHtmlfromUrl(new Uri("https://twitter.com/" + item), "", ""); ///Get user ID /// string userID = string.Empty; //try //{ // int startIndx = UserTimelinePageSource.IndexOf("data-user-id=\"") + "data-user-id=\"".Length; // int endIndx = UserTimelinePageSource.IndexOf("\"", startIndx); // userID = UserTimelinePageSource.Substring(startIndx, endIndx - startIndx); //} //catch { } try { userID = string.Empty; #region commentedRegionForUserId //string[] useridarr = System.Text.RegularExpressions.Regex.Split(UserTimelinePageSource, "data-user-id="); //foreach (string useridarr_item in useridarr) //{ // if (useridarr_item.Contains("profile-field")) // { // userID = useridarr_item.Substring(0 + 1, useridarr_item.IndexOf("<h1") - 3).Replace("\">\n", string.Empty).Trim(); // list_userIDsToFollow.Add(userID); // break; // } //} #endregion try { int startindex = UserTimelinePageSource.IndexOf("profile_id"); string start = UserTimelinePageSource.Substring(startindex).Replace("profile_id", ""); int endindex = start.IndexOf(","); string end = start.Substring(0, endindex).Replace(""", "").Replace("\"", "").Replace(":", "").Trim(); userID = end.Trim(); list_userIDsToFollow.Add(userID); } catch { } } catch { } } catch { }; } else { //Get user data // if uploaded list value is user name //get id from user name if (GlobusRegex.ValidateNumber(item)) { try { DataRow[] filteredRows = dt_AlreadyFollowed.Select(string.Format("{0} LIKE '%{1}%'", "following_id", item)); if (filteredRows.Count() > 0) { list_userIDsToFollow.Add(filteredRows[0].ItemArray[2].ToString()); } else { AddToLog_UnFollower("[ " + DateTime.Now + " ] => [ " + item + " Does not Followed by " + tweetAccountManager.Username + " ]"); } } catch { }; } else { try { string outstr = string.Empty; DataRow[] filteredRows = dt_AlreadyFollowed.Select(string.Format("{0} LIKE '%{1}%'", "following_username", item)); if (filteredRows.Count() > 0) { if (!string.IsNullOrEmpty(filteredRows[0].ItemArray[2].ToString())) { list_userIDsToFollow.Add(filteredRows[0].ItemArray[2].ToString()); } else if (filteredRows.Count() > 1 && !string.IsNullOrEmpty(filteredRows[1].ItemArray[2].ToString())) { list_userIDsToFollow.Add(filteredRows[1].ItemArray[2].ToString()); } else { AddToLog_UnFollower("[ " + DateTime.Now + " ] => [ " + item + " ID unavaliable. ]"); } } else { AddToLog_UnFollower("[ " + DateTime.Now + " ] => [ " + item + " Does not Followed by " + tweetAccountManager.Username + " ]"); //string status = string.Empty; //var abc = TwitterDataScrapper.GetUsernameToUserID_New(item, out status, ref tweetAccountManager.globusHttpHelper); //list_userIDsToFollow.Add(abc.ToString()); } } catch { }; } } } catch (Exception) { } if (list_userIDsToFollow.Count == TweetAccountManager.noOfUnfollows) { break; } } } else if (rdoUnfollowNotFollowing.Checked) { if (chkUnfollowDateFilter.Checked) { if (!string.IsNullOrEmpty(txtUnfollowFilterDays.Text) && GlobusRegex.ValidateNumber(txtUnfollowFilterDays.Text)) { int days = int.Parse(txtUnfollowFilterDays.Text); list_userIDsToFollow = tweetAccountManager.GetNonFollowingsBeforeSpecifiedDate(days, ref tweetAccountManager); } } else { list_userIDsToFollow = tweetAccountManager.GetNonFollowings(); } } else { TwitterDataScrapper DataScraper = new TwitterDataScrapper(); string Returnstatus = string.Empty; TwitterDataScrapper.NoOfFollowingsToBeunfollowed = NoOfFollwos; DataScraper.CounterDataNo = NoOfFollwos; AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ Scraping Following For : " + tweetAccountManager.Username + " ]"); //DataScraper.logEvents.addToLogger += new EventHandler(); DataScraper.logEvents.addToLogger += new EventHandler(logEvents_UnFollower_addToLogger); list_userIDsToFollow = DataScraper.GetFollowings_New(tweetAccountManager.Screen_name, out Returnstatus, ref tweetAccountManager.globusHttpHelper); if (list_userIDsToFollow.Count != 0) { List<string> temp_userIDsToFollow = new List<string>(); list_userIDsToFollow.ForEach(s => { if (s.Contains(':')) { temp_userIDsToFollow.Add(s.Split(':')[0]); } else { temp_userIDsToFollow.Add(s.ToString()); } }); if (temp_userIDsToFollow.Count != 0) { list_userIDsToFollow.Clear(); list_userIDsToFollow.AddRange(temp_userIDsToFollow); } } AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ " + list_userIDsToFollow.Count + " Following Scraped For : " + tweetAccountManager.Username + " ]"); TwitterDataScrapper.NoOfFollowingsToBeunfollowed = 0; DataScraper.logEvents.addToLogger -= new EventHandler(logEvents_UnFollower_addToLogger); } if (GlobusRegex.ValidateNumber(txtUnfollowMinDelay.Text)) { unfollowMinDelay = Convert.ToInt32(txtUnfollowMinDelay.Text); } if (GlobusRegex.ValidateNumber(txtUnfollowMaxDelay.Text)) { unfollowMaxDealy = Convert.ToInt32(txtUnfollowMaxDelay.Text); } tweetAccountManager.UnFollowUsingURLs(list_userIDsToFollow, unfollowMinDelay, unfollowMaxDealy); tweetAccountManager.unFollower.logEvents.addToLogger -= logEvents_UnFollower_addToLogger; tweetAccountManager.logEvents.addToLogger -= logEvents_UnFollower_addToLogger; } catch (Exception ex) { ErrorLogger.AddToErrorLogText(ex.Message); GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartUnFollowingMultithreaded() --> " + ex.Message, Globals.Path_UnfollowerErroLog); GlobusFileHelper.AppendStringToTextfileNewLine("Error --> StartUnFollowingMultithreaded() --> " + ex.Message, Globals.Path_TwtErrorLogs); } finally { counter_Account--; if (counter_Account == 0) { if (btnStartUnfollowing.InvokeRequired) { btnStartUnfollowing.Invoke(new MethodInvoker(delegate { AddToLog_Unfollow("[ " + DateTime.Now + " ] => [ PROCESS COMPLETED ]"); AddToLog_Unfollow("---------------------------------------------------------------------------------------------------------------------------"); btnStartUnfollowing.Cursor = Cursors.Default; })); } } } }