예제 #1
0
        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;
        }
예제 #2
0
        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("&quot;", "").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;

                        }));
                    }
                }
            }
        }