Beispiel #1
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="ServiceAddress">Web Service位址</param>
 /// <param name="mApi">Plurk Api物件</param>
 /// <param name="UnReadPlurks">未讀噗</param>
 public AutoFace(string ServiceAddress,PlurkApi.PlurkApi mApi,plurks UnReadPlurks)
 {
     if (ServiceAddress.Substring(ServiceAddress.Length - 1, 1) == "/") ServiceAddress = ServiceAddress.Substring(0, ServiceAddress.Length - 1);
     this._ServiceAddress = ServiceAddress;
     this._mApi = mApi;
     this._UnReadPlurks = UnReadPlurks;
 }
Beispiel #2
0
 public AutoTeach(PlurkApi.PlurkApi mApi,plurks UnreadPlurk)
 {
     this.MApi = mApi;
     _ListStrTeach = new List<string>();
     SetTeachContent();
     this.UnReadPlurk = UnreadPlurk;
 }
Beispiel #3
0
 public AutoSayHello(PlurkApi.PlurkApi mApi, string FoodXmlPath, DateTime Now,string testMessage)
 {
     this.MApi = mApi;
     this.FoodXMLPath = FoodXmlPath;
     this.NOW = Now;
     this.TestMessage = testMessage;
 }
Beispiel #4
0
 public AutoExchangeRate(PlurkApi.PlurkApi mApi, plurks UnReadPlurk)
 {
     xmlDoc.Load(PlurkModule.GetConfig.GetCurrencySynonymousFilePath());
     root = xmlDoc.DocumentElement;
     this._mApi = mApi;
     this._UnreadPlurk = UnReadPlurk;
 }
Beispiel #5
0
 /// <summary>
 /// 自動搶五樓
 /// </summary>
 /// <param name="mApi">Plurk api object</param>
 /// <param name="TimerBootMSec">timer作動時間</param>
 public AutoGetFifthFloor(PlurkApi.PlurkApi mApi, int TimerBootMSec, plurks UnreadPlurk,string fifthXmlPath)
 {
     this.MApi = mApi;
     this._TimerBootMSec = TimerBootMSec;
     this.UnReadPlurk = UnreadPlurk;
     this._fifthXMLPath = fifthXmlPath;
     this._IsAlive = false;
     this.aryResponse = this.GetXMLBranch2();
     this.aryStrResponse = this.GetXMLBranch1();
 }
Beispiel #6
0
 /// <summary>
 /// 取得Plurk
 /// </summary>
 /// <param name="mApi"></param>
 /// <param name="PlurkId"></param>
 /// <returns></returns>
 public static plurk GetPlurk(PlurkApi.PlurkApi mApi, Int64 PlurkId)
 {
     try
     {
         return mApi.getPlurk(PlurkId);
     }
     catch
     {
         return null;
     }
 }
Beispiel #7
0
 /// <summary>
 /// 取得暱稱
 /// </summary>
 /// <param name="mApi"></param>
 /// <param name="PlurkId"></param>
 /// <returns></returns>
 public static string GetPlurkNickName(PlurkApi.PlurkApi mApi, Int64 PlurkId)
 {
     try
     {
         publicProfile pProfile = mApi.getPublicProfile(PlurkId.ToString());
         return pProfile.user_info.nick_name;
     }
     catch (Exception ex)
     {
         return "";
     }
 }
Beispiel #8
0
        /// <summary>
        /// 取得未讀取的Plurk
        /// </summary>
        /// <param name="mApi"></param>
        /// <returns></returns>
        public static plurks GetUnReadPlurk(PlurkApi.PlurkApi mApi)
        {
            plurks returnPlurks = new plurks();
            returnPlurks = mApi.getUnreadPlurks(DateTime.Now,200);
            #region "取私噗"
            foreach (plurk plurk in mApi.getPlurks(DateTime.Now,100,PlurkTypeFilter.only_private))
            {
                bool addYN = true;
                foreach (plurk checkP in returnPlurks)
                {
                    if (checkP.plurk_id == plurk.plurk_id)
                    {
                        addYN = false;
                        break;
                    }

                    if (checkP.is_unread != 1)
                    {
                        addYN = false;
                        break;
                    }
                }
                if (addYN)
                    returnPlurks.Add(plurk);
            }
            #endregion
            return returnPlurks;
        }
Beispiel #9
0
        /// <summary>
        /// 批次處理
        /// </summary>
        /// <param name="mApi"></param>
        public static void RootingJob(PlurkApi.PlurkApi mApi)
        {
            blnRoot = true;
            StringBuilder sb = new StringBuilder();
            do
            {
                List<Thread> threadList = new List<Thread>();
                try
                {
                    DateTime now = DateTime.Now;
                    Console.WriteLine(string.Format("本批次開始....開始時間:{0}",now.ToString("MM-dd hh:mm:ss")));
                    plurks UnReadPlurk = PlurkModule.Common.GetUnReadPlurk(mApi);

                    #region thread listing

                    string strGuId = Guid.NewGuid().ToString();
                    //回應股價
                    if (GetConfig.BootStock())
                    {
                        Thread autoStockThread = new Thread(new ParameterizedThreadStart(PlurkModule.ThreadCallFunction.CallForStockQuery));
                        autoStockThread.Name = "Stock-" + strGuId;
                        threadList.Add(autoStockThread);
                    }
                    //自動搶五樓
                    if (GetConfig.BootFifth())
                    {
                        Thread autoGet5Thread = new Thread(new ParameterizedThreadStart(PlurkModule.ThreadCallFunction.CallForGetFifth));
                        autoGet5Thread.Name = "5-" + strGuId;
                        threadList.Add(autoGet5Thread);
                    }
                    // 出來面對
                    if (GetConfig.BootFaceIt())
                    {
                        //Thread autoFaceThread = new Thread(new ParameterizedThreadStart(PlurkModule.AutoFace));
                        //autoFaceThread.Name = "Face-" + strGuId  ;
                        //threadList.Add(autoFaceThread);
                    }
                    //外匯
                    if (GetConfig.AutoExrate())
                    {
                        Thread autoExchangeRate = new Thread(new ParameterizedThreadStart(PlurkModule.ThreadCallFunction.CallForExrate));
                        autoExchangeRate.Name = "exrate-" + strGuId;
                        threadList.Add(autoExchangeRate);
                    }
                    //美食
                    if (GetConfig.AutoFoodSuggest())
                    {
                        Thread autoFoodSuggest = new Thread(new ParameterizedThreadStart(PlurkModule.ThreadCallFunction.CallForFoodSuggest));
                        autoFoodSuggest.Name = "foodsuggest-" + strGuId;
                        threadList.Add(autoFoodSuggest);
                    }

                    #endregion
                    #region thread processing
                    foreach (Thread Thread in threadList)
                    {
                        string[] aryThreadName = Thread.Name.Split('-');

                        switch (aryThreadName[0].ToLower())
                        {
                            case "5":
                                PlurkModule.FifthParameter FifthParameter = new PlurkModule.FifthParameter();
                                FifthParameter.Api = mApi;
                                FifthParameter.TimerBootMSec = GetConfig.GetTimerInterval();
                                FifthParameter.UnReadPlurk = UnReadPlurk;
                                FifthParameter.XmlFilePath = GetConfig.GetfifthDataFile();
                                Thread.Start(FifthParameter);
                                break;
                            case "face":
                                break;
                            case "stock":
                                PlurkModule.StockerParameter StockerParameter = new PlurkModule.StockerParameter();
                                StockerParameter.Api = mApi;
                                StockerParameter.UnReadPlurk = UnReadPlurk;
                                StockerParameter.XmlFilePath = GetConfig.GetStockDataFile();
                                Thread.Start(StockerParameter);
                                break;
                            case "exrate":
                                PlurkModule.AutoExrateParameter AutoExrateParameter = new PlurkModule.AutoExrateParameter();
                                AutoExrateParameter.Api = mApi;
                                AutoExrateParameter.UnReadPlurk = UnReadPlurk;
                                Thread.Start(AutoExrateParameter);
                                break;
                            case "foodsuggest":
                                PlurkModule.AutoFoodSuggestParameter AutoFoodSuggestParameter = new PlurkModule.AutoFoodSuggestParameter();
                                AutoFoodSuggestParameter.Api = mApi;
                                AutoFoodSuggestParameter.UnReadPlurk = UnReadPlurk;
                                AutoFoodSuggestParameter.XmlFilePath = GetConfig.GetFoodDataFile();
                                Thread.Start(AutoFoodSuggestParameter);
                                break;
                            default:
                                break;
                        }
                        GC.Collect();
                    }
                    #endregion
                    #region thread terminating

                    bool blnAllThreadIsDead = false;
                    do
                    {
                        blnAllThreadIsDead = false;
                        int iThreadCount = 0;
                        foreach (Thread Thread in threadList)
                        {
                            if (Thread.IsAlive)
                            {
                                blnAllThreadIsDead = false;
                                break;
                            }
                            iThreadCount++;
                        }
                        if (iThreadCount == threadList.Count)
                            blnAllThreadIsDead = true;
                        if (blnAllThreadIsDead)
                        {
                            #region //將已讀的噗標示靜音
                            if (!GetConfig.DebugMode())
                            {
                                List<Int64> ListUnReadPlurkId = new List<Int64>();
                                List<Int64> ListNeedToMutePlurkId = new List<Int64>();
                                foreach (plurk plurk in UnReadPlurk)
                                {
                                    if (plurk.response_count > 5) ListNeedToMutePlurkId.Add(plurk.plurk_id);
                                    ListUnReadPlurkId.Add(plurk.plurk_id);
                                }
                                mApi.markAsRead(ListUnReadPlurkId);
                                //回應數大於5的就靜音,以節省資源
                                mApi.mutePlurks(ListNeedToMutePlurkId);
                            }
                            #endregion
                            Console.WriteLine(string.Format("本批次結束....結束時間:{0}", DateTime.Now.ToString("MM-dd hh:mm:ss")));
                        }
                    }
                    while (!blnAllThreadIsDead);
                    #endregion
                }
                catch (Exception ex)
                {
                    Console.WriteLine("error " + ex.Message);
                    sb.AppendLine(string.Format("{0}Error time:{1}{0}Reason:{2}", Environment.NewLine, DateTime.Now.ToString("MM-dd hh:mm:ss"), ex.Message));
                    blnRoot = false;
                    throw;
                }
                finally
                {
                    foreach (Thread thread in threadList)
                        if (thread.IsAlive) thread.Abort();
                }
            } while (blnRoot);

            if (!blnRoot)
            {
                string sfilePath = System.IO.Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) +"\\errorlog.txt";
                if (!File.Exists(sfilePath)) File.CreateText(sfilePath);
                sb.AppendLine("**********************");
                File.AppendAllText(sfilePath, sb.ToString(), Encoding.UTF8);//Log記錄
            }
        }
Beispiel #10
0
 public AutoSayHello(PlurkApi.PlurkApi mApi, string FoodXmlPath,DateTime Now)
 {
     this.MApi = mApi;
     this.FoodXMLPath = FoodXmlPath;
     this.NOW = Now;
 }
Beispiel #11
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="mApi"></param>
 /// <param name="UnReadPlurk"></param>
 /// <param name="FoodXmlFilePath"></param>
 public AutoFoodSuggest(PlurkApi.PlurkApi mApi, plurks UnreadPlurk, string FoodXmlFilePath)
 {
     this.MApi = mApi;
     this.UnReadPlurk = UnreadPlurk;
     this.FoodXMLFilePath = FoodXmlFilePath;
 }
Beispiel #12
0
 public AutoAddToFriends(PlurkApi.PlurkApi mApi,plurks UnReadPlurk)
 {
     this._mApi = mApi;
     this.UnreadPlurk = UnReadPlurk;
 }