Ejemplo n.º 1
0
        public void StartWaitAndReply(string tweetKeyword)
        {
            List<string> lstTweetImages = new List<string>();
            try
            {
                if (!IsLoggedIn)
                {
                    Login();
                }
                int counterDataScraped = 0;

                if (IsLoggedIn)
                {
                    if (IsNotSuspended)
                    {
                        TwitterDataScrapper tweetScrapper = new TwitterDataScrapper();
                        lst_Struct_TweetData = tweetScrapper.GetTweetData_WaitReply(tweetKeyword);
                        Log("[ " + DateTime.Now + " ] => [ Extracted " + lst_Struct_TweetData.Count + " Tweet Ids ]");
                        if (IsTweetWithImage)
                        {
                            if (!Directory.Exists(ImageFolderPath))
                            {
                                Log("[ " + DateTime.Now + " ] => [ Image Folder Does't Exist. ]");
                                return;
                            }
                            ///Load Image ...
                            lstTweetImages = GetImagePathFromFolder(ImageFolderPath);

                            if (lstTweetImages.Count != 0)
                            {
                                if (lstTweetImages.Count < listTweetMessages.Count)
                                {
                                    int remaining = listTweetMessages.Count - lstTweetImages.Count;
                                    for (int i = 0; i < remaining; i++)
                                    {
                                        string Imagepath = string.Empty;
                                        try
                                        {
                                            Imagepath = lstTweetImages[i];
                                        }
                                        catch (Exception ex)
                                        {
                                            i = 0;
                                            Imagepath = lstTweetImages[i];
                                        }
                                        lstTweetImages.Add(Imagepath);
                                    }
                                }
                                else
                                {
                                    ///if  images is greater than messages.
                                }
                            }
                            else
                            {
                                Log("[ " + DateTime.Now + " ] => [ Please Folder is Empty. Please add images in :-  " + ImageFolderPath + " ]");
                                return;
                            }

                            ///print number of Images ...
                            Log("[ " + DateTime.Now + " ] => [ " + lstTweetImages.Count() + " Images uploaded. ]");
                            foreach (string item in lstTweetImages)
                            {
                                que_ImagePath_WaitAndReply.Enqueue(item);
                            }
                        }
                        while (que_TweetMessages_WaitAndReply.Count > 0)
                        {
                            if (que_ReplyMessages_WaitAndReply.Count <= 0)
                            {
                                break;
                            }
                            if (que_TweetMessages_WaitAndReply.Count <= 0)
                            {
                                break;
                            }

                            #region MyRegion
                            ////Tweet
                            ////listTweetMessages = Randomiser.Shuffle(listTweetMessages).ToList();
                            //foreach (string item in listTweetMessages)
                            //{
                            //    que_TweetMessages.Enqueue(item);
                            //}
                            ////listTweetMessages = Randomiser.Shuffle(listTweetMessages).ToList();
                            //foreach (string item in listReplyMessages)
                            //{
                            //    que_ReplyMessages.Enqueue(item);
                            //}
                            #endregion

                            int countTweetsSent = 0;
                            int interval = WaitAndReplyInterval;

                            while (countTweetsSent < noOfTweetsPerReply)
                            {
                                //Tweet
                                string tweetStatus;

                                string tweetMessage = "";
                                string ImagePath="";

                                #region MyRegion
                                //if (que_TweetMessages.Count == 0)
                                //{
                                //    //listTweetMessages = Randomiser.Shuffle(listTweetMessages).ToList();
                                //    foreach (string item in listTweetMessages)
                                //    {
                                //        que_TweetMessages.Enqueue(item);
                                //    }
                                //}
                                #endregion

                                lock (locker_que_TweetMessages_WaitAndReply)
                                {
                                    if (que_TweetMessages_WaitAndReply.Count > 0)
                                    {
                                        try
                                        {
                                            tweetMessage = que_TweetMessages_WaitAndReply.Dequeue();
                                            ImagePath = que_ImagePath_WaitAndReply.Dequeue();
                                        }
                                        catch (Exception ex)
                                        {
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager -- locker_que_TweetMessages_WaitAndReply --  --> " + ex.Message, Globals.Path_WaitNreplyErroLog);
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager --  StartWaitAndReply() -- locker_que_TweetMessages_WaitAndReply -- " + Username + " --> " + ex.Message, Globals.Path_TweetAccountManager);
                                        }
                                    }
                                    else
                                    {
                                        Log("[ " + DateTime.Now + " ] => [All Loaded Tweet Messages Used ]");
                                        break;
                                    }
                                }

                                if (IsTweetWithImage)
                                {
                                    tweeter.TweetMessageWithImage(ref globusHttpHelper, postAuthenticityToken, tweetMessage, ImagePath, out tweetStatus);
                                    if (tweetStatus == "posted")
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Tweeted : " + tweetMessage + " with image:"+ImagePath+" by " + Username + " ]");
                                        clsDBQueryManager DataBase = new clsDBQueryManager();
                                        string dbTweetMessage = StringEncoderDecoder.Encode(tweetMessage);
                                        DataBase.InsertMessageData(Username, "Tweet", "", dbTweetMessage);
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword+":"+tweetMessage, Globals.path_SuccessfullyTweetAccounts);
                                        countTweetsSent++;
                                        if (!waitAndReplyIsIntervalInsec)
                                        {
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                            Thread.Sleep(interval);
                                        }
                                        else
                                        {
                                            try
                                            {
                                                interval = RandomNumberGenerator.GenerateRandom(waitAndReplyMinInterval, waitAndReplyMaxInterval);
                                            }
                                            catch { }
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + interval + " seconds. ]");
                                            interval = interval * 1000;
                                            Thread.Sleep(interval);
                                        }
                                    }
                                    else
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Couldn't Post : " + tweetMessage + " with image:"+ImagePath+" by " + Username + " ]");
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword + ":" + tweetMessage, Globals.path_FailedToTweetAccounts);
                                        countTweetsSent++;
                                        //Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                        //Thread.Sleep(interval);
                                        if (!waitAndReplyIsIntervalInsec)
                                        {
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                            Thread.Sleep(interval);
                                        }
                                        else
                                        {
                                            try
                                            {
                                                interval = RandomNumberGenerator.GenerateRandom(waitAndReplyMinInterval, waitAndReplyMaxInterval);
                                            }
                                            catch { }
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + interval + " seconds. ]");
                                            interval = interval * 1000;
                                            Thread.Sleep(interval);
                                        }
                                    }
                                }
                                else
                                {
                                    tweeter.Tweet(ref globusHttpHelper, postAuthenticityToken, tweetMessage, out tweetStatus);
                                    if (tweetStatus == "posted")
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Tweeted : " + tweetMessage + " by " + Username + " ]");
                                        clsDBQueryManager DataBase = new clsDBQueryManager();
                                        string dbTweetMessage = StringEncoderDecoder.Encode(tweetMessage);
                                        DataBase.InsertMessageData(Username, "Tweet", "", dbTweetMessage);
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword + ":" + tweetMessage, Globals.path_SuccessfullyTweetAccounts);
                                        countTweetsSent++;
                                        //Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                        //Thread.Sleep(interval);
                                        if (!waitAndReplyIsIntervalInsec)
                                        {
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                            Thread.Sleep(interval);
                                        }
                                        else
                                        {
                                            try
                                            {
                                                interval = RandomNumberGenerator.GenerateRandom(waitAndReplyMinInterval, waitAndReplyMaxInterval);
                                            }
                                            catch { }
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + interval + " seconds. ]");
                                            interval = interval * 1000;
                                            Thread.Sleep(interval);
                                        }
                                    }
                                    else
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Couldn't Post : " + tweetMessage + " by " + Username + " ]");
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword + ":" + tweetMessage, Globals.path_FailedToTweetAccounts);
                                        countTweetsSent++;
                                        //Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                        //Thread.Sleep(interval);
                                        if (!waitAndReplyIsIntervalInsec)
                                        {
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                            Thread.Sleep(interval);
                                        }
                                        else
                                        {
                                            try
                                            {
                                                interval = RandomNumberGenerator.GenerateRandom(waitAndReplyMinInterval, waitAndReplyMaxInterval);
                                            }
                                            catch { }
                                            Log("[ " + DateTime.Now + " ] => [ Delay For : " + interval + " seconds. ]");
                                            interval = interval * 1000;
                                            Thread.Sleep(interval);
                                        }
                                    }
                                }
                            }

                            //Reply

                            if (lst_Struct_TweetData.Count == 0)
                            {
                                lst_Struct_TweetData = tweetScrapper.GetTweetData_New(tweetKeyword);
                            }
                            if (lst_Struct_TweetData.Count != 0)
                            {
                                int counter_Reply = 1;

                                //foreach (TwitterDataScrapper.StructTweetIDs item in lst_Struct_TweetData)
                                //{
                                while (countTweetsSent == counter_Reply * noOfTweetsPerReply && que_ReplyMessages_WaitAndReply.Count > 0)
                                {
                                    string replyStatus;
                                    string replyMessage = "";

                                    #region MyRegion
                                    //if (counter_Reply >= 1)
                                    //{
                                    //    break;
                                    //}
                                    //if (que_ReplyMessages.Count == 0)
                                    //{
                                    //    //listReplyMessages = Randomiser.Shuffle(listReplyMessages).ToList();
                                    //    foreach (string ReplyMessage in listReplyMessages)
                                    //    {
                                    //        que_ReplyMessages.Enqueue(ReplyMessage);
                                    //    }
                                    //}
                                    #endregion

                                    lock (locker_que_ReplyMessage_WaitAndReply)
                                    {
                                        if (que_ReplyMessages_WaitAndReply.Count > 0)
                                        {
                                            try
                                            {
                                                //replyMessage = listReplyMessages[RandomNumberGenerator.GenerateRandom(0, listReplyMessages.Count - 1)];
                                                replyMessage = que_ReplyMessages_WaitAndReply.Dequeue();
                                            }
                                            catch (Exception ex)
                                            {
                                                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager -- locker_que_ReplyMessage_WaitAndReply --  --> " + ex.Message, Globals.Path_WaitNreplyErroLog);
                                                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager --  StartWaitAndReply() -- locker_que_ReplyMessage_WaitAndReply -- " + Username + " --> " + ex.Message, Globals.Path_TweetAccountManager);
                                            }
                                        }
                                        else
                                        {
                                            Log("[ " + DateTime.Now + " ] => [ All Loaded Reply Messages Used ]");
                                            break;
                                        }
                                    }

                                    tweeter.Reply(ref globusHttpHelper, pgSrc_Profile, postAuthenticityToken, lst_Struct_TweetData[counterDataScraped].ID_Tweet, lst_Struct_TweetData[counterDataScraped].username__Tweet_User, replyMessage, out replyStatus);

                                    if (replyStatus == "posted")
                                    {
                                        counter_Reply++;
                                        clsDBQueryManager DataBase = new clsDBQueryManager();
                                        string dbTweetMessage = StringEncoderDecoder.Encode(lst_Struct_TweetData[counterDataScraped].wholeTweetMessage);
                                        DataBase.InsertMessageData(Username, "Reply", lst_Struct_TweetData[counterDataScraped].ID_Tweet_User, lst_Struct_TweetData[counterDataScraped].wholeTweetMessage);
                                        Log("[ " + DateTime.Now + " ] => [ Replied : " + replyMessage + " by " + Username + " ]");
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword + ":" + replyMessage, Globals.path_SuccessfullyRepliedAccounts);
                                    }
                                    else
                                    {
                                        counter_Reply++;
                                        Log("[ " + DateTime.Now + " ] => [ Couldn't Reply : " + replyMessage + " by " + Username + " ]");
                                        GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword + ":" + replyMessage, Globals.path_FailedRepliedAccounts);
                                    }
                                    //Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes +  " Minutes ]");
                                    //Thread.Sleep(interval);
                                    if (!waitAndReplyIsIntervalInsec)
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Delay For : " + TimeSpan.FromMilliseconds(interval).Minutes + " Minutes ]");
                                        Thread.Sleep(interval);
                                    }
                                    else
                                    {
                                        try
                                        {
                                            interval = RandomNumberGenerator.GenerateRandom(waitAndReplyMinInterval, waitAndReplyMaxInterval);
                                        }
                                        catch { }
                                        Log("[ " + DateTime.Now + " ] => [ Delay For : " + interval + " seconds. ]");
                                        interval = interval * 1000;
                                        Thread.Sleep(interval);
                                    }
                                    counterDataScraped++;
                                    if (countTweetsSent <= noOfTweetsPerReply)
                                    {
                                        countTweetsSent = 0;
                                        break;
                                    }

                                }

                            }
                            else
                            {
                                Log("[ " + DateTime.Now + " ] => [ Tweet Data is not available for Tweet Keyword:- " + tweetKeyword + " ]");
                            }

                        }
                        if (que_ReplyMessages_WaitAndReply.Count <= 0)
                        {
                            Log("[ " + DateTime.Now + " ] => [ Remaining Reply Message : " + que_ReplyMessages_WaitAndReply.Count + " ]");
                            Log("[ " + DateTime.Now + " ] => [ Finished Reply Messages ]");
                            Log("------------------------------------------------------------------------------------------------------------------------------------------");
                        }
                        if (que_TweetMessages_WaitAndReply.Count <= 0)
                        {
                            Log("[ " + DateTime.Now + " ] => [ Remaining Tweet Message: " + que_TweetMessages_WaitAndReply.Count + " ]");
                            Log("[ " + DateTime.Now + " ] => [ Finished Tweet Messages ]");
                            Log("------------------------------------------------------------------------------------------------------------------------------------------");
                        }

                        //Log("Finished Replying with : " + Username);
                    }
                }
                else
                {
                    Log("[ " + DateTime.Now + " ] => [ Couldn't log in with :" + Username + " ]");
                    GlobusFileHelper.AppendStringToTextfileNewLine(Username + ":" + Password + ":" + proxyAddress + ":" + proxyPort + ":" + proxyUsername + ":" + proxyPassword, Globals.path_FailedLoginAccounts);
                }
            }
            catch (Exception ex)
            {
                //Log("[ " + DateTime.Now + " ] => [ >>Error :- TweetAccountManager  (StartWaitAndReply)>> " + ex.Message + " ]");
                Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager -- StartWaitAndReply  --> " + ex.Message, Globals.Path_WaitNreplyErroLog);
                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager --  StartWaitAndReply() -- " + Username + " --> " + ex.Message, Globals.Path_TweetAccountManager);
            }
        }