Beispiel #1
0
        public void GetStartReply(Object parameters)
        {
            string CampaignName = string.Empty;

            try
            {
                Interlocked.Increment(ref counterThreadsCampaignReply);

                Tweeter.Tweeter tweeter = new Tweeter.Tweeter();

                tweeter.logEvents.addToLogger += new EventHandler(logEvents_addToLogger);

                Array paramsArray = new object[10];

                paramsArray = (Array)parameters;

                //get value from param
                KeyValuePair <string, MixedCampaignManager.classes.CampaignAccountManager> keyValue = (KeyValuePair <string, MixedCampaignManager.classes.CampaignAccountManager>)paramsArray.GetValue(0);

                string accKey = keyValue.Key;

                MixedCampaignManager.classes.CampaignAccountManager ReplyAccountManager = keyValue.Value;

                List <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> lst_ReplyData = (List <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>)paramsArray.GetValue(1);

                List <string> lst_ReplyMsgs = (List <string>)paramsArray.GetValue(2);

                bool _IsReplyParDay = (bool)paramsArray.GetValue(3);

                int _NoofReplyParDay = (int)paramsArray.GetValue(4);

                int _NoofReplyParAc = (int)paramsArray.GetValue(5);

                int DelayStar = (int)paramsArray.GetValue(6);

                int DelayEnd = (int)paramsArray.GetValue(7);

                CampaignName = (string)paramsArray.GetValue(8);

                //Get scheduler time and status if task is scheduled
                bool IsSchedulDaily = (bool)paramsArray.GetValue(9);

                DateTime SchedulerEndTime = (DateTime)paramsArray.GetValue(10);


                int MsgCounter = 0;

                //Add List Of Working thread
                //we are using this list when we stop/abort running camp processes..
                try
                {
                    MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Add(CampaignName + "_" + ReplyAccountManager.Username, Thread.CurrentThread);
                }
                catch (Exception)
                {
                }

                //get account logging
                if (!(CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).Keys.Contains(accKey))
                {
                    ReplyAccountManager.Login();
                    try
                    {
                        CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Add(accKey, ReplyAccountManager);
                    }
                    catch { };
                }
                else
                {
                    try
                    {
                        ReplyAccountManager = null;
                        bool values = (CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).TryGetValue(accKey, out ReplyAccountManager);
                    }
                    catch (Exception)
                    {
                    }
                }

                count_AccountForReply_CompleteMessage = CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Count();


                if (!ReplyAccountManager.IsLoggedIn || !ReplyAccountManager.IsNotSuspended)
                {
                    return;
                }

                foreach (var lst_ReplyData_item in lst_ReplyData)
                {
                    //Check Scheduled Task end time
                    //If task is scheduled
                    if (IsSchedulDaily)
                    {
                        if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                        {
                            _IsReplyProcessStart = true;
                            new Thread(() =>
                            {
                                frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                frmcamp.StoprunningCampaign(CampaignName);
                            }).Start();
                            break;
                        }
                    }

                    // foreach (string Msg in lst_ReplyMsgs)
                    {
                        string tweetId = lst_ReplyData_item.ID_Tweet;

                        string tweetUsername = lst_ReplyData_item.username__Tweet_User;

                        if (MsgCounter == lst_ReplyMsgs.Count)
                        {
                            MsgCounter = 0;
                        }

                        string Msg = lst_ReplyMsgs[MsgCounter];

                        string _wholeTweetMessage = lst_ReplyData_item.wholeTweetMessage;
                        string tweetStatus;

                        tweeter.Reply(ref ReplyAccountManager.globusHttpHelper, "", ReplyAccountManager.postAuthenticityToken, tweetId, tweetUsername, Msg, out tweetStatus);

                        if (tweetStatus == "posted")
                        {
                            Log("[ " + DateTime.Now + " ] => [ Message :- " + Msg + " Tweet :- " + _wholeTweetMessage + " by " + keyValue.Key + " ]");

                            try
                            {
                                RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, tweetId, "", "", Msg);
                            }
                            catch (Exception)
                            {
                            }
                        }
                        else
                        {
                            Log("[ " + DateTime.Now + " ] => [ Status :- " + tweetStatus + " by " + keyValue.Key + " ]");
                        }

                        int delay = BaseLib.RandomNumberGenerator.GenerateRandom(DelayStar * 1000, DelayEnd * 1000);
                        Log("[ " + DateTime.Now + " ] => [ Delay :- " + TimeSpan.FromMilliseconds(delay).Seconds + " Seconds. ]");
                        Thread.Sleep(delay);
                        MsgCounter++;
                    }
                }
            }
            catch (Exception)
            {
            }
            finally
            {
                count_AccountForReply_CompleteMessage--;
                Interlocked.Decrement(ref counterThreadsCampaignReply);

                lock (lockerThreadsCampaignReply)
                {
                    Monitor.Pulse(lockerThreadsCampaignReply);
                    if (counterThreadsCampaignReply == 0)
                    {
                        RaiseCampaignFineshedEvent(CampaignName);
                        Log("[ " + DateTime.Now + " ] => [ Process completed. ]");
                        Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(CampaignName + ": " + DateTime.Now, Globals.path_LogCampaignCompleted);
                    }
                }
            }
        }
        private void StartCampaignTweeting(object parameters)
        {
            int SingleTweetMsgCount = 0;

            string CampaignName = string.Empty;
            //CampaignAccountManager tweetAccountManager = null;
            try
            {
                Interlocked.Increment(ref counterThreadsCamapignTweet);
                Tweeter.Tweeter Objtweet;

                //get all parems from object
                Array paramsArray = new object[2];
                paramsArray = (Array)parameters;

                //get value from param
                KeyValuePair<string, CampaignAccountManager> keyValue = (KeyValuePair<string, CampaignAccountManager>)paramsArray.GetValue(0);

                //get Message list prom param
                List<string> _lstTweetMsg = (List<string>)paramsArray.GetValue(1);

                //get bool value for tweet per account
                bool IsAllTweetParAc = (bool)paramsArray.GetValue(2);

                //get delay start and end timming from param
                int DelayStar = (int)paramsArray.GetValue(3);
                int DelayEnd = (int)paramsArray.GetValue(4);

                //get Number of tweets par account .
                int NoOfTweetPerAc = (int)paramsArray.GetValue(5);

                CampaignName = (string)paramsArray.GetValue(6);

                //Get scheduler time and status if task is scheduled
                bool IsSchedulDaily = (bool)paramsArray.GetValue(7);
                DateTime SchedulerEndTime = (DateTime)paramsArray.GetValue(8);
                bool IsHashTagsCampaign = (bool)paramsArray.GetValue(9);

                string TweetFilePath = (string)paramsArray.GetValue(10);
                bool IsUserList = (bool)paramsArray.GetValue(11);
                string UserListFilePath = (string)paramsArray.GetValue(12);
                //set get account details from kay value pair
                //and create event to print log messages from account related..
                string accKey = keyValue.Key;
                string Hashtags = string.Empty;
                CampaignAccountManager tweetAccountManager = keyValue.Value;

                //Add List Of Working thread
                //we are using this list when we stop/abort running camp processes..
                try
                {
                    MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Add(CampaignName + "_" + tweetAccountManager.Username, Thread.CurrentThread);
                }
                catch (Exception)
                {
                }

                //attempt login from account
                if (!(CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).Keys.Contains(accKey))
                {
                    //get account logging
                    tweetAccountManager.Login();
                    try
                    {
                        CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Add(accKey, tweetAccountManager);
                    }
                    catch { };
                }
                else
                {
                    try
                    {
                        tweetAccountManager = null;
                        bool values = (CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).TryGetValue(accKey, out tweetAccountManager);
                        //if (!tweetAccountManager.IsLoggedIn && !tweetAccountManager.IsNotSuspended)
                        //{

                        //}
                    }
                    catch (Exception)
                    {
                    }
                }

                //check account is logged in
                if (tweetAccountManager.IsLoggedIn)
                {
                    //check account is suspended or not

                    //Comment by Prabhat 06.11.13
                    if (tweetAccountManager.IsNotSuspended)
                    {
                        //check condition if user wants to all tweet per account
                        if (IsAllTweetParAc)
                        {
                            #region All Tweet Par Account
                            Objtweet = new Tweeter.Tweeter();

                            int MSGcounter = 0;

                         //   TemplstTweetMsg = _lstTweetMsg;
                            for (int i = 0; i < _lstTweetMsg.Count; i++)
                            {
                                try
                                {
                                    //Check Scheduled Task end time
                                    //If task is scheduled
                                    if (IsSchedulDaily)
                                    {
                                        if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                                        {
                                            _IsTweetProcessStart = true;
                                            new Thread(() =>
                                            {
                                                //frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                                //frmcamp.StoprunningCampaign(CampaignName);
                                                //frmcamp.startTweet(CampaignName, "");

                                                RaiseCampaignSearchLogEvents(campName);
                                                RaiseCampaignStartLogEvents(campName);

                                            }).Start();
                                            break;
                                        }
                                    }

                                    //Process is execuite
                                   string tweetMsg = _lstTweetMsg[i];

                                    //string tweetMsg = string.Empty;

                                    //try
                                    //{
                                    //    tweetMsg = TemplstTweetMsg[i];
                                    //    TemplstTweetMsg.Remove(tweetMsg);
                                    //}
                                    //catch (Exception ex)
                                    //{
                                    //  tweetMsg = _lstTweetMsg[i];
                                    //}

                                    if (IsHashTagsCampaign)
                                    {
                                        lock (locker_que_hashtags)
                                        {

                                            if (que_TweetMessages_Campaign_Hashtags.Count > 0)
                                            {
                                                try
                                                {
                                                    Hashtags = que_TweetMessages_Campaign_Hashtags.Dequeue();
                                                }
                                                catch (Exception ex)
                                                {
                                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartTweetingMultithreaded() -- Tweet -- que_TweetMessages_Hashtags --> " + ex.Message, Globals.Path_TweetingErroLog);
                                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager --  Tweet -- que_TweetMessages_Hashtags  --> " + ex.Message, Globals.Path_TweetAccountManager);
                                                }
                                            }
                                            else
                                            {
                                                Log("[ " + DateTime.Now + " ] => [ All Loaded Hash Tags Are Used ]");
                                                //break;
                                            }
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(Hashtags))
                                    {
                                        tweetMsg = Hashtags + " " + tweetMsg;
                                    }

                                    string status = string.Empty;

                                    Objtweet.Tweet(ref tweetAccountManager.globusHttpHelper, tweetAccountManager.postAuthenticityToken, tweetMsg, out status);

                                    if (status == "posted")
                                    {
                                        //If susceesfully posted

                                        Log("[ " + DateTime.Now + " ] => [ Message :- " + tweetMsg + " is posted from " + keyValue.Key + " ]");

                                        try
                                        {
                                            //Insert details in Report table
                                            RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, "", tweetMsg, "", "");
                                        }

                                        catch (Exception ex)
                                        {
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() -- Tweet -- > " + ex.Message, Globals.Path_TweetingErroLog);
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() --  Tweet   --> " + ex.Message, Globals.Path_TweetAccountManager);
                                        }
                                        try
                                        {
                                            RemoveFollwerFromTxtFile(TweetFilePath, tweetMsg);
                                            if (IsUserList)
                                            {
                                                RemoveMentionUser(UserListFilePath,tweetMsg,TweetFilePath);
                                            }
                                        }
                                        catch { }

                                    }
                                    else
                                    {
                                        //not successFully Posted

                                        Log("[ " + DateTime.Now + " ] => [ Message is not posted from " + accKey + " ]");
                                    }

                                    //Delay after every Tweet..
                                    int delay = BaseLib.RandomNumberGenerator.GenerateRandom(DelayStar, DelayEnd);
                                    Log("[ " + DateTime.Now + " ] => [ Delay :- " + delay + " Seconds ]");
                                    Thread.Sleep(delay * 1000);

                                }
                                catch (Exception ex)
                                {
                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() -- Tweet -- IsAllTweetParAc --> " + ex.Message, Globals.Path_TweetingErroLog);
                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() --  Tweet -- IsAllTweetParAc  --> " + ex.Message, Globals.Path_TweetAccountManager);
                                }
                                finally
                                {

                                }
                            }
                            #endregion
                        }
                        else
                        {
                            #region Single Tweet par account

                            try
                            {
                                Objtweet = new Tweeter.Tweeter();

                                while (true)
                                {
                                    if (QtweetMsg.Count == 0)
                                    {
                                        Log("[ " + DateTime.Now + " ] => [ Message is finished from message list. ]");
                                        Log("[ " + DateTime.Now + " ] => [ PROCESS COMPLETED ]");
                                        Log("-----------------------------------------------------------------------------------------------------------------------");
                                        break;
                                    }

                                    //Check Scheduler end time
                                    //If task is scheduled
                                    if (IsSchedulDaily)
                                    {
                                        if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                                        {
                                            _IsTweetProcessStart = true;
                                            new Thread(() =>
                                            {
                                                //frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                                //frmcamp.StoprunningCampaign(CampaignName);
                                                //frmcamp.startTweet(CampaignName, "");

                                                RaiseCampaignSearchLogEvents(campName);
                                                RaiseCampaignStartLogEvents(campName);
                                            }).Start();

                                            return;
                                        }
                                    }

                                    //if (SingleTweetMsgCount >= _lstTweetMsg.Count)
                                    //{
                                    //    AddToCampaignLoggerListBox("Message is finished from message list.");
                                    //    return;
                                    //}

                                    string tweetMsg = QtweetMsg.Dequeue();

                                    if (IsHashTagsCampaign)
                                    {
                                        lock (locker_que_hashtags)
                                        {

                                            if (que_TweetMessages_Campaign_Hashtags.Count > 0)
                                            {
                                                try
                                                {
                                                    Hashtags = que_TweetMessages_Campaign_Hashtags.Dequeue();
                                                }
                                                catch (Exception ex)
                                                {
                                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartTweetingMultithreaded() -- Tweet -- que_TweetMessages_Hashtags --> " + ex.Message, Globals.Path_TweetingErroLog);
                                                    GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> TweetAccountManager --  Tweet -- que_TweetMessages_Hashtags  --> " + ex.Message, Globals.Path_TweetAccountManager);
                                                }
                                            }
                                            else
                                            {
                                                Log("[ " + DateTime.Now + " ] => [ All Loaded Hash Tags Are Used ]");
                                                //break;
                                            }
                                        }
                                    }
                                    if (!string.IsNullOrEmpty(Hashtags))
                                    {
                                        tweetMsg = Hashtags + " " + tweetMsg;
                                    }
                                    string status = string.Empty;

                                    Objtweet.Tweet(ref tweetAccountManager.globusHttpHelper, tweetAccountManager.postAuthenticityToken, tweetMsg, out status);

                                    if (status == "posted")
                                    {
                                        try
                                        {
                                            //Insert details in Report table
                                            RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, "", tweetMsg, "", "");
                                        }
                                        catch (Exception ex)
                                        {
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() -- Tweet  --> " + ex.Message, Globals.Path_TweetingErroLog);
                                            GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() --  Tweet   --> " + ex.Message, Globals.Path_TweetAccountManager);
                                        }

                                        //If susceesfully posted

                                        Log("[ " + DateTime.Now + " ] => [ Message :- " + tweetMsg + " is posted from " + keyValue.Key + " ]");

                                        try
                                        {
                                            RemoveFollwerFromTxtFile(TweetFilePath, tweetMsg);
                                        }
                                        catch { }

                                        if (IsUserList)
                                        {
                                            RemoveMentionUser(UserListFilePath, tweetMsg, TweetFilePath);
                                        }

                                        //control threads according to number of message par account

                                        if (NoOfTweetPerAc != 0)
                                        {
                                            if (NoOfTweetPerAc == SingleTweetMsgCount)
                                            {
                                                Log("[ " + DateTime.Now + " ] => [ Finished number of tweet as per account Limit From :- " + accKey + " ]");
                                                Log("[ " + DateTime.Now + " ] => [ PROCESS COMPLETED ]");
                                                Log("-----------------------------------------------------------------------------------------------------------------------");
                                                return;
                                            }

                                            SingleTweetMsgCount++;
                                        }
                                    }
                                    else
                                    {
                                        //not successFully Posted
                                        Log("[ " + DateTime.Now + " ] => [ Message :- " + tweetMsg + " is not posted from " + keyValue.Key + " ]");
                                        QtweetMsg.Enqueue(tweetMsg);

                                        ///decrease counter when posting is failed
                                        if (SingleTweetMsgCount > 0)
                                            SingleTweetMsgCount--;
                                    }

                                    //Delay after every Tweet..
                                    int delay = BaseLib.RandomNumberGenerator.GenerateRandom(DelayStar, DelayEnd);
                                    Log("[ " + DateTime.Now + " ] => [ Delay :- " + delay + " Seconds ]");
                                    Thread.Sleep(delay*1000);
                                }
                            }
                            catch (Exception ex)
                            {
                                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() -- Tweet -- IsAllTweetParAcNotTrue --> " + ex.Message, Globals.Path_TweetingErroLog);
                                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweeting() --  Tweet -- IsAllTweetParAcNotTrue  --> " + ex.Message, Globals.Path_TweetAccountManager);
                            }
                            finally
                            {

                            }

                            #endregion
                        }
                    }
                    else
                    {
                        //If account is suspended ...
                        //its returns without performing any operation
                        //AddToCampaignLoggerListBox("User is suspended  " + keyValue.Key);
                        //return;
                    }
                }
                else
                {
                    ////If not logged in account
                    //AddToCampaignLoggerListBox("Login failed from " + keyValue.Key);
                    //return;
                }
            }
            catch (Exception ex)
            {
                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweetingEndBlock -- Tweet   --> " + ex.Message, Globals.Path_TweetingErroLog);
                GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> StartCampaignTweetingEndBlock --  Tweet   --> " + ex.Message, Globals.Path_TweetAccountManager);
            }
            finally
            {

                Interlocked.Decrement(ref counterThreadsCamapignTweet);

                lock (lockerThreadsCampaignTweet)
                {
                    Monitor.Pulse(lockerThreadsCampaignTweet);
                }

                //counterThreadsCamapignTweet--;
                if (counterThreadsCamapignTweet == 0)
                {
                    if (MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.ContainsKey(CampaignName))
                    {
                        MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Remove(CampaignName);
                    }
                    if (cls_variables.lstCampaignStartShedular.Contains(CampaignName))
                    {
                        try
                        {
                            cls_variables.lstCampaignStartShedular.Remove(CampaignName);

                        }
                        catch { };
                    }
                    _IsTweetProcessStart = true;

                    RaiseCampaignFineshedEvent(CampaignName);
                    Log("[ " + DateTime.Now + " ] => [ Process completed for campaign " + CampaignName + " ]");
                    Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(CampaignName + ": " + DateTime.Now, Globals.path_LogCampaignCompleted);
                }
            }
        }
Beispiel #3
0
        public void startRetweeting(object parameters)
        {
            Tweeter.Tweeter tweeter = new Tweeter.Tweeter();
            tweeter.logEvents.addToLogger += new EventHandler(logEvents_addToLogger);
            string CampaignName = string.Empty;
            try
            {
                Interlocked.Increment(ref counterThreadsCampaignRetweet);

                Queue<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> Queue_Struct_TweetData = new Queue<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>();

                int Tweetcounter = 0;

                //get all parems from object 

                Array paramsArray = new object[2];

                paramsArray = (Array)parameters;

                //get value from param
                KeyValuePair<string, MixedCampaignManager.classes.CampaignAccountManager> keyValue = (KeyValuePair<string, MixedCampaignManager.classes.CampaignAccountManager>)paramsArray.GetValue(0);

                string accKey = keyValue.Key;

                MixedCampaignManager.classes.CampaignAccountManager RetweetAccountManager = keyValue.Value;

                List<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> lst_Struct_TweetData1 = (List<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>)paramsArray.GetValue(1);

                bool IsRetweetParDay = (bool)paramsArray.GetValue(2);

                int NoofRetweetParDay = (int)paramsArray.GetValue(3);

                int NoofRetweetParAc = (int)paramsArray.GetValue(4);

                int minDelay = (int)paramsArray.GetValue(5);

                int maxDelay = (int)paramsArray.GetValue(6);

                 CampaignName = (string)paramsArray.GetValue(7);


                //Get scheduler time and status if task is scheduled 
                bool IsSchedulDaily = (bool)paramsArray.GetValue(8);

                DateTime SchedulerEndTime = (DateTime)paramsArray.GetValue(9);

                // Add list Value in Queue list ...
                lst_Struct_TweetData1.ForEach(acc => { Queue_Struct_TweetData.Enqueue(acc); });


                //Add List Of Working thread
                //we are using this list when we stop/abort running camp processes..
                try
                {
                    MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Add(CampaignName + "_" + RetweetAccountManager.Username, Thread.CurrentThread);
                }
                catch (Exception)
                {
                }

                //get account logging 
                if (!(CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).Keys.Contains(accKey))
                {
                    RetweetAccountManager.Login();

                    try
                    {
                        CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Add(accKey, RetweetAccountManager);
                    }
                    catch { };
                }
                else
                {
                    try
                    {
                        RetweetAccountManager = null;
                        bool values = (CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).TryGetValue(accKey, out RetweetAccountManager);
                    }
                    catch (Exception)
                    {
                    }
                }

                if (RetweetAccountManager.IsLoggedIn)
                {
                    if (RetweetAccountManager.IsNotSuspended)
                    {
                        while (Queue_Struct_TweetData.Count > 0)
                        {
                            string tweetStatus = string.Empty;
                            int delay = 0;

                            if (Queue_Struct_TweetData.Count == 0)
                            {
                                break;
                            }

                            if (Tweetcounter == NoofRetweetParAc)
                            {
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Per account re-tweet limit has exceeded from " + keyValue.Key + " ]");
                                break;
                            }


                            //Check Scheduled Task end time 
                            //If task is scheduled 
                            if (IsSchedulDaily)
                            {
                                if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                                {
                                    _IsReTweetProcessStart = true;
                                    new Thread(() =>
                                    {
                                        frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                        frmcamp.StoprunningCampaign(CampaignName);
                                    }).Start();
                                    break;
                                }
                            }

                            try
                            {
                                delay = RandomNumberGenerator.GenerateRandom((minDelay), (maxDelay));
                            }
                            catch (Exception ex)
                            {
                                delay = 10;
                            }

                            MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs TweetDetails = Queue_Struct_TweetData.Dequeue();

                            tweeter.ReTweet(ref RetweetAccountManager.globusHttpHelper, "", RetweetAccountManager.postAuthenticityToken, TweetDetails.ID_Tweet, "", out tweetStatus);

                            if (tweetStatus == "posted")
                            {
                                Tweetcounter++;
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ >> Retweeted  : >> " + TweetDetails.wholeTweetMessage + " by " + keyValue.Key + " ]");
                                try
                                {
                                    RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, TweetDetails.ID_Tweet, "", TweetDetails.wholeTweetMessage, "");
                                }
                                catch (Exception)
                                {
                                }
                            }
                            else
                            {
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ >> Couldn't Retweet  : >> " + TweetDetails.wholeTweetMessage + " by " + keyValue.Key + " ]");
                            }

                            //ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Delay :- " + TimeSpan.FromMilliseconds(delay).Seconds + " seconds ] ");
                            ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Delay :- " + delay + " seconds ]");
                            Thread.Sleep(delay * 1000);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> startRetweeting()  --> " + ex.Message, Globals.Path_TweetingErroLog);
                Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> startRetweeting() --> " + ex.Message, Globals.Path_TwtErrorLogs);
            }
            finally
            {
                tweeter.logEvents.addToLogger -= new EventHandler(logEvents_addToLogger);
                Interlocked.Decrement(ref counterThreadsCampaignRetweet);

                lock (lockerThreadsCamapignRetweet)
                {
                    Monitor.Pulse(lockerThreadsCamapignRetweet);
                }
                if (counterThreadsCampaignRetweet == 0)
                {
                    RaiseCampaignFineshedEvent(CampaignName);
                    ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ PROCESS COMPLETED for Campaign "+CampaignName +" ]");
                    Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(CampaignName + ": " + DateTime.Now, Globals.path_LogCampaignCompleted);
                }
            }
        }
Beispiel #4
0
        public void startRetweeting(object parameters)
        {
            Tweeter.Tweeter tweeter = new Tweeter.Tweeter();
            tweeter.logEvents.addToLogger += new EventHandler(logEvents_addToLogger);
            string CampaignName = string.Empty;

            try
            {
                Interlocked.Increment(ref counterThreadsCampaignRetweet);

                Queue <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> Queue_Struct_TweetData = new Queue <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>();

                int Tweetcounter = 0;

                //get all parems from object

                Array paramsArray = new object[2];

                paramsArray = (Array)parameters;

                //get value from param
                KeyValuePair <string, MixedCampaignManager.classes.CampaignAccountManager> keyValue = (KeyValuePair <string, MixedCampaignManager.classes.CampaignAccountManager>)paramsArray.GetValue(0);

                string accKey = keyValue.Key;

                MixedCampaignManager.classes.CampaignAccountManager RetweetAccountManager = keyValue.Value;

                List <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> lst_Struct_TweetData1 = (List <MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>)paramsArray.GetValue(1);

                bool IsRetweetParDay = (bool)paramsArray.GetValue(2);

                int NoofRetweetParDay = (int)paramsArray.GetValue(3);

                int NoofRetweetParAc = (int)paramsArray.GetValue(4);

                int minDelay = (int)paramsArray.GetValue(5);

                int maxDelay = (int)paramsArray.GetValue(6);

                CampaignName = (string)paramsArray.GetValue(7);


                //Get scheduler time and status if task is scheduled
                bool IsSchedulDaily = (bool)paramsArray.GetValue(8);

                DateTime SchedulerEndTime = (DateTime)paramsArray.GetValue(9);

                // Add list Value in Queue list ...
                lst_Struct_TweetData1.ForEach(acc => { Queue_Struct_TweetData.Enqueue(acc); });


                //Add List Of Working thread
                //we are using this list when we stop/abort running camp processes..
                try
                {
                    MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Add(CampaignName + "_" + RetweetAccountManager.Username, Thread.CurrentThread);
                }
                catch (Exception)
                {
                }

                //get account logging
                if (!(CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).Keys.Contains(accKey))
                {
                    RetweetAccountManager.Login();

                    try
                    {
                        CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Add(accKey, RetweetAccountManager);
                    }
                    catch { };
                }
                else
                {
                    try
                    {
                        RetweetAccountManager = null;
                        bool values = (CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).TryGetValue(accKey, out RetweetAccountManager);
                    }
                    catch (Exception)
                    {
                    }
                }

                if (RetweetAccountManager.IsLoggedIn)
                {
                    if (RetweetAccountManager.IsNotSuspended)
                    {
                        while (Queue_Struct_TweetData.Count > 0)
                        {
                            string tweetStatus = string.Empty;
                            int    delay       = 0;

                            if (Queue_Struct_TweetData.Count == 0)
                            {
                                break;
                            }

                            if (Tweetcounter == NoofRetweetParAc)
                            {
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Per account re-tweet limit has exceeded from " + keyValue.Key + " ]");
                                break;
                            }


                            //Check Scheduled Task end time
                            //If task is scheduled
                            if (IsSchedulDaily)
                            {
                                if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                                {
                                    _IsReTweetProcessStart = true;
                                    new Thread(() =>
                                    {
                                        frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                        frmcamp.StoprunningCampaign(CampaignName);
                                    }).Start();
                                    break;
                                }
                            }

                            try
                            {
                                delay = RandomNumberGenerator.GenerateRandom((minDelay), (maxDelay));
                            }
                            catch (Exception ex)
                            {
                                delay = 10;
                            }

                            MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs TweetDetails = Queue_Struct_TweetData.Dequeue();

                            tweeter.ReTweet(ref RetweetAccountManager.globusHttpHelper, "", RetweetAccountManager.postAuthenticityToken, TweetDetails.ID_Tweet, "", out tweetStatus);

                            if (tweetStatus == "posted")
                            {
                                Tweetcounter++;
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ >> Retweeted  : >> " + TweetDetails.wholeTweetMessage + " by " + keyValue.Key + " ]");
                                try
                                {
                                    RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, TweetDetails.ID_Tweet, "", TweetDetails.wholeTweetMessage, "");
                                }
                                catch (Exception)
                                {
                                }
                            }
                            else
                            {
                                ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ >> Couldn't Retweet  : >> " + TweetDetails.wholeTweetMessage + " by " + keyValue.Key + " ]");
                            }

                            //ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Delay :- " + TimeSpan.FromMilliseconds(delay).Seconds + " seconds ] ");
                            ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ Delay :- " + delay + " seconds ]");
                            Thread.Sleep(delay * 1000);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> startRetweeting()  --> " + ex.Message, Globals.Path_TweetingErroLog);
                Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(DateTime.Now + " --> Error --> startRetweeting() --> " + ex.Message, Globals.Path_TwtErrorLogs);
            }
            finally
            {
                tweeter.logEvents.addToLogger -= new EventHandler(logEvents_addToLogger);
                Interlocked.Decrement(ref counterThreadsCampaignRetweet);

                lock (lockerThreadsCamapignRetweet)
                {
                    Monitor.Pulse(lockerThreadsCamapignRetweet);
                }
                if (counterThreadsCampaignRetweet == 0)
                {
                    RaiseCampaignFineshedEvent(CampaignName);
                    ReTweetUserControlLog("[ " + DateTime.Now + " ] => [ PROCESS COMPLETED for Campaign " + CampaignName + " ]");
                    Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(CampaignName + ": " + DateTime.Now, Globals.path_LogCampaignCompleted);
                }
            }
        }
Beispiel #5
0
        public void GetStartReply(Object parameters)
        {
            string CampaignName = string.Empty;
            try
            {
                Interlocked.Increment(ref counterThreadsCampaignReply);

                Tweeter.Tweeter tweeter = new Tweeter.Tweeter();

                tweeter.logEvents.addToLogger += new EventHandler(logEvents_addToLogger);

                Array paramsArray = new object[10];

                paramsArray = (Array)parameters;

                //get value from param
                KeyValuePair<string, MixedCampaignManager.classes.CampaignAccountManager> keyValue = (KeyValuePair<string, MixedCampaignManager.classes.CampaignAccountManager>)paramsArray.GetValue(0);

                string accKey = keyValue.Key;

                MixedCampaignManager.classes.CampaignAccountManager ReplyAccountManager = keyValue.Value;

                List<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs> lst_ReplyData = (List<MixedCampaignManager.classes.CampTwitterDataScrapper.StructTweetIDs>)paramsArray.GetValue(1);

                List<string> lst_ReplyMsgs = (List<string>)paramsArray.GetValue(2);

                bool _IsReplyParDay = (bool)paramsArray.GetValue(3);

                int _NoofReplyParDay = (int)paramsArray.GetValue(4);

                int _NoofReplyParAc = (int)paramsArray.GetValue(5);

                int DelayStar = (int)paramsArray.GetValue(6);

                int DelayEnd = (int)paramsArray.GetValue(7);

                CampaignName = (string)paramsArray.GetValue(8);

                //Get scheduler time and status if task is scheduled 
                bool IsSchedulDaily = (bool)paramsArray.GetValue(9);

                DateTime SchedulerEndTime = (DateTime)paramsArray.GetValue(10);


                int MsgCounter = 0;

                //Add List Of Working thread
                //we are using this list when we stop/abort running camp processes..
                try
                {
                    MixedCampaignManager.classes.cls_variables.Lst_WokingThreads.Add(CampaignName + "_" + ReplyAccountManager.Username, Thread.CurrentThread);
                }
                catch (Exception)
                {
                }

                //get account logging 
                if (!(CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).Keys.Contains(accKey))
                {
                    ReplyAccountManager.Login();
                    try
                    {
                        CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Add(accKey, ReplyAccountManager);
                    }
                    catch { };
                }
                else
                {
                    try
                    {
                        ReplyAccountManager = null;
                        bool values = (CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts).TryGetValue(accKey, out ReplyAccountManager);
                    }
                    catch (Exception)
                    {
                    }
                }

                count_AccountForReply_CompleteMessage = CampaignManager.CampaignAccountsList.dictionary_CampaignAccounts.Count();


                if (!ReplyAccountManager.IsLoggedIn || !ReplyAccountManager.IsNotSuspended)
                {
                    return;
                }

                foreach (var lst_ReplyData_item in lst_ReplyData)
                {

                    //Check Scheduled Task end time 
                    //If task is scheduled 
                    if (IsSchedulDaily)
                    {
                        if (SchedulerEndTime.Hour == DateTime.Now.Hour && DateTime.Now.Minute >= SchedulerEndTime.Minute)
                        {
                            _IsReplyProcessStart = true;
                            new Thread(() =>
                            {
                                frm_mixcampaignmanager frmcamp = new frm_mixcampaignmanager();
                                frmcamp.StoprunningCampaign(CampaignName);
                            }).Start();
                            break;
                        }
                    }

                   // foreach (string Msg in lst_ReplyMsgs)
                    {
                        string tweetId = lst_ReplyData_item.ID_Tweet;

                        string tweetUsername = lst_ReplyData_item.username__Tweet_User;

                        if (MsgCounter == lst_ReplyMsgs.Count)
                        {
                            MsgCounter = 0;
                        }

                        string Msg = lst_ReplyMsgs[MsgCounter];

                        string _wholeTweetMessage = lst_ReplyData_item.wholeTweetMessage;
                        string tweetStatus;

                        tweeter.Reply(ref ReplyAccountManager.globusHttpHelper, "", ReplyAccountManager.postAuthenticityToken, tweetId, tweetUsername, Msg, out tweetStatus);

                        if (tweetStatus == "posted")
                        {
                            Log("[ " + DateTime.Now + " ] => [ Message :- " + Msg + " Tweet :- " + _wholeTweetMessage + " by " + keyValue.Key + " ]");

                            try
                            {
                                RepositoryClasses.ReportTableRepository.InsertReport(CampaignName, accKey, "", 0, tweetId, "", "", Msg);
                            }
                            catch (Exception)
                            {
                            }
                        }
                        else
                        {
                            Log("[ " + DateTime.Now + " ] => [ Status :- " + tweetStatus + " by " + keyValue.Key + " ]");
                        }

                        int delay = BaseLib.RandomNumberGenerator.GenerateRandom(DelayStar * 1000, DelayEnd * 1000);
                        Log("[ " + DateTime.Now + " ] => [ Delay :- " + TimeSpan.FromMilliseconds(delay).Seconds + " Seconds. ]");
                        Thread.Sleep(delay);
                        MsgCounter++; 
                    }
                }

            }
            catch (Exception)
            {
            }
            finally
            {
                count_AccountForReply_CompleteMessage--;
                Interlocked.Decrement(ref counterThreadsCampaignReply);

                lock (lockerThreadsCampaignReply)
                {
                    Monitor.Pulse(lockerThreadsCampaignReply);
                    if (counterThreadsCampaignReply == 0)
                    {
                        RaiseCampaignFineshedEvent(CampaignName);
                        Log("[ " + DateTime.Now + " ] => [ Process completed. ]");
                        Globussoft.GlobusFileHelper.AppendStringToTextfileNewLine(CampaignName + ": " + DateTime.Now, Globals.path_LogCampaignCompleted);
                    }
                }
                
                
            }
        }
Beispiel #6
0
        public void retweetOfUrl(object param)
        {
            string reTweetUrlPageSource = string.Empty;
            string ReTweetId = string.Empty;
            string tweetStatus = "";
            int minDelay = 20;
            int maxDelay = 25;
            int delay = 10 * 1000;
            if (GlobusRegex.ValidateNumber(txtRetweetFavMinDelay.Text) && GlobusRegex.ValidateNumber(txtRetweetFavMinDelay.Text))
            {
                minDelay = Convert.ToInt32(txtRetweetFavMinDelay.Text);
                maxDelay = Convert.ToInt32(txtRetweetFavMaxDelay.Text);
            }
            delay = RandomNumberGenerator.GenerateRandom(minDelay, maxDelay);

            TweetAccountManager tweetAccountManager = new TweetAccountManager();

            try
            {
                Tweeter.Tweeter tweeter = new Tweeter.Tweeter();

                Array ParamArr = (Array)param;

                string RetweetUrl = (string)ParamArr.GetValue(0);

                KeyValuePair<string, TweetAccountManager> keyValue_Item = (KeyValuePair<string, TweetAccountManager>)ParamArr.GetValue(1);

                tweetAccountManager = (TweetAccountManager)ParamArr.GetValue(2);

                try
                {
                    //Get Id of tweet from URL..
                    if (RetweetUrl.Contains("/"))
                    {
                        string[] SplitReTweetUrl = RetweetUrl.Split('/');
                        ReTweetId = SplitReTweetUrl[SplitReTweetUrl.Count() - 1];

                    }
                    else
                    {
                        AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ URL is in wrong Formate   > " + RetweetUrl + " ]");
                    }
                }
                catch (Exception)
                {
                    AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ URL is in wrong Formate   > " + RetweetUrl + " ]");
                }

                if (!string.IsNullOrEmpty(RetweetUrl))
                {

                    //check Coount is loged in or Is not suspended ..
                    if (tweetAccountManager.IsLoggedIn)
                    {
                        if (tweetAccountManager.IsNotSuspended)
                        {
                            try
                            {
                                //Get the page Source from URL...
                                //reTweetUrlPageSource = tweetAccountManager.globusHttpHelper.getHtmlfromUrl(new Uri(RetweetUrl), "", "");

                                //finally post retweet on Given Url ...
                                tweeter.ReTweetByUrl(ref tweetAccountManager.globusHttpHelper, tweetAccountManager.postAuthenticityToken, ReTweetId, out tweetStatus);

                                //check the return value from with condition ...if its succesfully retweeted or not ...
                                if (tweetStatus == "posted")
                                {
                                    //RetweetCount++;
                                    //Prnt in logger is posted..
                                    AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Retweeted :" + RetweetUrl + " from " + tweetAccountManager.Username + " ]");
                                    AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Success fully Retweeted Form Account > " + keyValue_Item.Key);
                                    GlobusFileHelper.AppendStringToTextfileNewLine(keyValue_Item.Key + ":" + tweetAccountManager.Password + ":" + tweetAccountManager.proxyAddress + ":" + tweetAccountManager.proxyPort + ":" + tweetAccountManager.proxyUsername + ":" + tweetAccountManager.proxyPassword, Globals.path_SucessfullyRetweetToUrlFromId);
                                }
                                else
                                {
                                    AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Fail/Already Retweeted From Account  > " + keyValue_Item.Key + " ]");
                                    GlobusFileHelper.AppendStringToTextfileNewLine(keyValue_Item.Key + ":" + tweetAccountManager.Password + ":" + tweetAccountManager.proxyAddress + ":" + tweetAccountManager.proxyPort + ":" + tweetAccountManager.proxyUsername + ":" + tweetAccountManager.proxyPassword, Globals.path_FailureRetweetToUrlFromId);
                                }
                                AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Retweet delay for "+delay+" secs ]");
                                //AddToLog_RetweetAndFavorite("Retweet delay for "+delay+" secs");
                                Thread.Sleep(delay * 1000);
                            }
                            catch (Exception ex)
                            {
                                //AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Error :-  > " + ex.Message + " ]");
                                GlobusFileHelper.AppendStringToTextfileNewLine("Error :- Mathod Name :- retweetOfUrl- 1; Error Text :- " + ex.Message, Globals.path_LogErrorFromRetweetAndFavorit);
                            }
                        }
                        else
                        {
                            AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Account Is suspended  >" + keyValue_Item.Key + " ]");
                        }
                    }
                    else
                    {
                        AddToLog_RetweetAndFavorite("[ " + DateTime.Now + " ] => [ Account Login Faile   >" + keyValue_Item.Key + " ]");
                    }
                }
            }
            catch (Exception ex)
            {
                //AddToLog_RetweetAndFavorite("Error :-  > " + ex.Message);
                GlobusFileHelper.AppendStringToTextfileNewLine("Error :- Mathod Name :- retweetOfUrl- 2; Error Text :- " + ex.Message, Globals.path_LogErrorFromRetweetAndFavorit);
            }
        }