/// <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; }
public AutoTeach(PlurkApi.PlurkApi mApi,plurks UnreadPlurk) { this.MApi = mApi; _ListStrTeach = new List<string>(); SetTeachContent(); this.UnReadPlurk = UnreadPlurk; }
public AutoSayHello(PlurkApi.PlurkApi mApi, string FoodXmlPath, DateTime Now,string testMessage) { this.MApi = mApi; this.FoodXMLPath = FoodXmlPath; this.NOW = Now; this.TestMessage = testMessage; }
public AutoExchangeRate(PlurkApi.PlurkApi mApi, plurks UnReadPlurk) { xmlDoc.Load(PlurkModule.GetConfig.GetCurrencySynonymousFilePath()); root = xmlDoc.DocumentElement; this._mApi = mApi; this._UnreadPlurk = UnReadPlurk; }
/// <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(); }
/// <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; } }
/// <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 ""; } }
/// <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; }
/// <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記錄 } }
public AutoSayHello(PlurkApi.PlurkApi mApi, string FoodXmlPath,DateTime Now) { this.MApi = mApi; this.FoodXMLPath = FoodXmlPath; this.NOW = Now; }
/// <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; }
public AutoAddToFriends(PlurkApi.PlurkApi mApi,plurks UnReadPlurk) { this._mApi = mApi; this.UnreadPlurk = UnReadPlurk; }