// #region 最新开奖信息 private void RefreshLatestOpenData(string html) { Response.Write("-----最新开奖-----" + "<br/>"); try { PK10_List list = new PK10().GetCurrentOpenDataByHtml2(html); //从付费网站,比较快开奖 if (list != null) { list.ValidDate = list.Date.AddDays(myValidDays); Response.Write("第" + list.No + "期" + "<br/>"); Response.Write("开奖时间:" + list.EndTime.ToString() + "<br/>"); Response.Write("开奖号码:" + list.Nums + "<br/>"); //更新开奖 string cSave = new PK10().SaveOpenData(list); if (cSave == "") { new PK10().SetNextGetOpenData(myOpenTimes, mySaleTimes); } else { Response.Write("【更新开奖出错】:" + cSave); } } } catch (Exception ex) { Response.Write("[最新开奖信息]出错:" + ex.Message.Replace("\n", "</br>") + "<br/>"); } }
//public JNDKL8 getJNDKL8(DateTime dt) //{ // string url = "http://www.168kai.com/History/HisList?id=10041&date=" + dt.ToString("yyyy-MM-dd") + "&_=0.6148420795228382"; // string webresource = getWebresource(url); // if (webresource == "") // { // return null; // } // JNDKL8 jNDKL = JsonConvert.DeserializeObject<JNDKL8>(webresource); // //jNDKL.list.Reverse(); // return null; //} public List <PK10> getPK10(DateTime dt) { // http://kaijiang.500.com/static/info/kaijiang/xml/bjpkshi/20180508.xml?_A=BYLAPNGF1525816892243 string url = "http://kaijiang.500.com/static/info/kaijiang/xml/bjpkshi/" + dt.ToString("yyyyMMdd") + ".xml"; string webresource = getWebresource(url); if (webresource == "") { return(null); } // 解析 webresource XmlControl xmlControl = new XmlControl(); xmlControl.LoadXmlString(webresource); XmlNodeList xmlNodeList = xmlControl.SelectNodes("row"); List <PK10> pK10List = new List <PK10>(); foreach (XmlNode item in xmlNodeList) { PK10 pK10 = new PK10(); pK10.Expect = int.Parse(item.SelectSingleNode("@expect").Value); pK10.Opentime = Convert.ToDateTime(item.SelectSingleNode("@opentime").Value); string[] sArr = item.SelectSingleNode("@opencode").Value.Split(','); List <int> list = new List <int>(); foreach (string item1 in sArr) { list.Add(int.Parse(item1)); } pK10.ListOpencode = list; pK10List.Add(pK10); } pK10List.Reverse(); return(pK10List); }
// 从 https://168kai.com/ 获取 public List <PK10> getPK10_by168kai(DateTime dt) { // https://api.api68.com/pks/getPksHistoryList.do?lotCode=10001&date=2018-05-01 string url = "https://api.api68.com/pks/getPksHistoryList.do?lotCode=10001&date=" + dt.ToString("yyyy-MM-dd"); string webresource = getWebresource(url); if (webresource == "") { return(null); } // 解析json webresource JObject jo = (JObject)JsonConvert.DeserializeObject(webresource); //Console.WriteLine(jo["errorCode"]); //Console.WriteLine(jo["message"]); //Console.WriteLine(jo["result"]["businessCode"]); //Console.WriteLine(jo["result"]["data"]); //Console.WriteLine(jo["result"]["data"][0]["preDrawCode"]); if (jo["errorCode"].ToString() != "0" || jo["result"]["businessCode"].ToString() != "0") { return(null); } List <PK10> Pk10List = new List <PK10>(); foreach (JObject item in jo["result"]["data"]) { PK10 pK10 = new PK10(); pK10.Expect = int.Parse(item["preDrawIssue"].ToString()); pK10.Opentime = Convert.ToDateTime(item["preDrawTime"].ToString()); string[] sArr = item["preDrawCode"].ToString().Split(','); if (sArr.Length < 2) { continue; } List <int> list = new List <int>(); foreach (string item1 in sArr) { list.Add(int.Parse(item1)); } pK10.ListOpencode = list; Pk10List.Add(pK10); } Pk10List.Reverse(); return(Pk10List); }
protected void Page_Load(object sender, EventArgs e) { _logic = new PK10(); GameName = ub.GetSub("GameName", xmlPath); Master.Title = GameName; string act = Utils.GetRequest("act", "all", 1, "", ""); switch (act) { case "save": SaveSetting(); break; default: ShowSettings(); break; } }
private PK10_BuyType GetBuyType() //随机取到购买的类型 { PK10_BuyType buytype = new PK10_BuyType(); try { List <PK10_BuyType> lists = new PK10().GetBuyTypes3(); if (lists != null) { Random rd = new Random(); buytype = lists[rd.Next(lists.Count)]; } } catch { buytype = null; } return(buytype); }
private void CalcOpenData() { Response.Write("【派奖计算】" + "<br/>"); try { string cFlag = new PK10().CalcOpenData(); if (cFlag != "") { Response.Write("[派奖计算]出错:" + cFlag.Replace("\n", "</br>") + "<br/>"); } else { Response.Write("派奖完成!"); } } catch (Exception ex) { Response.Write("[派奖计算]出错:" + ex.Message.Replace("\n", "</br>") + "<br/>"); } }
private void GetLatestOpenDatas(string html, string beginNo) { Response.Write("-----最近开奖-----" + "<br/>"); try { IList <PK10_List> openList = new PK10().GetLatestOpenDataByHtml(html); if (openList.Count > 0) { int beginno = int.Parse(beginNo); for (int i = openList.Count - 1; i >= 0; i--) { int no = int.Parse(openList[i].No.ToString()); if (no >= beginno)//已经读取过的开奖记录,不计算 { openList[i].ValidDate = openList[i].Date.AddDays(myValidDays); Response.Write("第" + openList[i].No + "期" + openList[i].Nums + "<br/>"); } } } else { Response.Write("无开奖记录" + "<br/>"); return; } //更新最近开奖记录 string cSave = new PK10().SaveOpenDatas(openList, beginNo); if (cSave == "") { new PK10().SetNextGetOpenData(myOpenTimes, mySaleTimes); } else { Response.Write("【更新开奖出错】:" + cSave); } } catch (Exception ex) { Response.Write("[最近开奖记录]出错:" + ex.Message.Replace("\n", "</br>") + "<br/>"); } }
protected int defaultOpenTimes = 179; //每人销售的期数 protected void Page_Load(object sender, EventArgs e) { try { string GameName = ub.GetSub("GameName", xmlPath); DateTime GameBeginTime, GameEndTime, CurrentTime; int GameOpenTimes, SaleTimes, OpenTimes, ValidDays; int StopSec = defaultStopSec; bool AutoCalc = false; #region 读取配置项,并初始化变量 try { int.TryParse(ub.GetSub("StopSaleSec", xmlPath), out StopSec); if (StopSec <= defaultStopSecMin) { StopSec = defaultStopSec; } // string ct1 = ub.GetSub("GameBeginTime", xmlPath); string ct2 = ub.GetSub("GameEndTime", xmlPath); GameBeginTime = Convert.ToDateTime(ct1); GameEndTime = Convert.ToDateTime(ct2); CurrentTime = DateTime.Now; GameOpenTimes = int.Parse(ub.GetSub("GameOpenTimes", xmlPath)); //游戏每天开奖期数 SaleTimes = int.Parse(ub.GetSub("SaleTimes", xmlPath)); //每期游戏开售分钟数 OpenTimes = int.Parse(ub.GetSub("OpenTimes", xmlPath)); //每期游戏开奖分钟数(在上期停售后N秒后开奖) ValidDays = int.Parse(ub.GetSub("ValidDays", xmlPath)); //当期的兑奖有效日期天数 myOpenTimes = OpenTimes; mySaleTimes = SaleTimes; myValidDays = ValidDays; int autocalc = int.Parse(ub.GetSub("AutoCalc", xmlPath)); if (autocalc == 1) { AutoCalc = true; } } catch (Exception ex) { Response.Write("error1“读取配置项并初始化变量”出错!!!" + "</br>"); Response.Write(ex.Message.Replace("\n", "</br>")); return; } #endregion Response.Write("PK10每天的销售时间为" + GameBeginTime.ToShortTimeString() + "至" + GameEndTime.ToShortTimeString() + ",每" + SaleTimes.ToString() + "分钟一期,每天" + GameOpenTimes.ToString().Trim() + "期" + "<br/>"); // PK10_Base _base = new PK10().GetSaleBase(); #region 判断是否已有初始化(tb_PK10_Base表添加一行ID=0的记录) if (_base == null) { Response.Write("ok1 没有初始化游戏数据" + "<br/>"); return; } #endregion if (_base.CurrentSaleDate < DateTime.Parse(CurrentTime.ToShortDateString())) { int newNo = new PK10().GetTodayFistCreateNo(); if (newNo > 0) { #region 初始化新的一天数据 //新的一天,从网页抓取正在开售的期 Response.Write("初始化新的一天数据...." + "<br/>"); string html = new PK10().GetHtmlByURL(); PK10_List list = new PK10().GetCurrentSaleDataByHtml(html); if (list != null) { //初始化当天销售数据(生成将要开售的期号) string cInitFlag = new PK10().InitSaleData(GameBeginTime, newNo, mySaleTimes, myValidDays, GameOpenTimes, StopSec); if (cInitFlag == "") { GetLatestOpenDatas(html, "0");//获取当天已经开奖的数据(补填当天的销售记录)(从百度彩票抓,可以抓到整日的数据) } else { Response.Write("error1 :初始化当天销售数据失败!" + "<br/>"); } } else { Response.Write("error1 :抓取网页数据失败!" + "<br/>"); } #endregion } else { Response.Write("error1“数据隔了1天以上没抓取过,请先设置今天的开始期号!”" + "</br>"); //向上一天插入一跳最后一期的记录,例如:insert into tb_PK10_List(No,date) values('584063','2016-10-30'),不用设置begintime,endtime等。 } return; } else { Response.Write("<a href =\"" + Utils.getPage("PK10Get.aspx" + "?act=getall") + "\">" + "手动抓取最近所有开奖数据" + "</a><br/>"); Response.Write("<a href =\"" + Utils.getPage("PK10Get.aspx") + "\">" + "自动抓取开奖数据" + "</a><br/>"); Response.Write("<br/>"); string act = Utils.GetRequest("act", "get", 1, "", ""); if (act == "getall") { Response.Write("【手动抓取最近所有开奖数据...】" + " <br/>"); string html = new PK10().GetHtmlByURL(); RefreshLatestOpenData(html); GetLatestOpenDatas(html, "0"); //(从百度彩票抓,可以抓到整日的数据) } else { Response.Write("【自动抓取第" + _base.GetOpenDataNo.ToString() + "期】" + "<br/>"); #region 读取开奖记录 if (CurrentTime < _base.GetOpenDataBeginTime) //未到公布开奖时间 { Response.Write("等待开奖公布..." + "<br/>"); } else { if (CurrentTime <= _base.GetOpenDataEndTime) //处于本期公布开奖时间,读取开奖记录,并重置下次读取的时间段 { string html = new PK10().GetHtmlByURL2(); RefreshLatestOpenData(html); } else //超过指定的开奖公布时间,读取最新开奖记录,并重置下次读取的时间段;然后读取已开奖的记录更新开奖(刷新机可能停止运作了一段长的时间) { string html = new PK10().GetHtmlByURL2(); RefreshLatestOpenData(html); html = new PK10().GetHtmlByURL(); GetLatestOpenDatas(html, _base.GetOpenDataNo); //(从百度彩票抓,可以抓到整日的数据) } } #endregion } } if (AutoCalc) { CalcOpenData(); //派奖计算 } Response.Write("ok1"); } catch (Exception ex) { Response.Write("error1" + "<br/>" + ex.Message); return; } }
private void CreateBuyNums(PK10_Buy buy, PK10_BuyType buytype)//生成号码组号 { string strAll = "01,02,03,04,05,06,07,08,09,10"; string newNums = ""; int nums = buytype.NumsCount; int parentid = buytype.ParentID; switch (parentid) { case 1: #region 号码买法 if (buy.NumType == 0) //单式,例子(直选前三):02|04|03 { #region 直接生成号码组号 newNums = CreateRandomString(null, strAll, nums, ""); newNums = newNums.Replace(',', '|'); buy.Nums = newNums; buy.NumsDetail = newNums; buy.BuyCount = 1; #endregion } else //复式,例子(前三复式):02,03|03,05,06|09 { #region 生成号码组号 Random rd0 = new Random(); Random rd1 = new Random(); for (int i = 0; i < nums; i++) { int randNums = rd0.Next(1, 3); string result = CreateRandomString(rd1, strAll, randNums, ""); //随机选择几个数字(机器人复式的每一位最多为3个号码) if (i == 0) { newNums = result; } else { newNums += "|" + result; } } buy.Nums = newNums; #endregion #region 拆分复式成每一注有效的单式号码,并变换成字符串格式,例猜前二位:01|02#01|03#01#04 List <string> list = new PK10().GenBuyNums(newNums, buytype.NumsCount); buy.BuyCount = list.Count; if (list.Count > 0) { string details = ""; for (int i = 0; i < list.Count; i++) { if (i == 0) { details = list[i]; } else { details += "#" + list[i]; } Response.Write(list[i] + " </br>"); } buy.NumsDetail = details; } #endregion } #endregion break; case 2: //大小玩法 case 3: //单双玩法 case 4: //龙虎玩法 #region 大小/单双/龙虎玩法 int ntype = new Random().Next(1, 10); //用Random().Next(0,1)总返回0; newNums = (ntype > 5) ? "1" : "0"; buy.Nums = newNums; buy.NumsDetail = newNums; buy.BuyCount = 1; #endregion break; case 5: //任选 #region 直接生成号码组号 newNums = CreateRandomString(null, strAll, nums, ""); newNums = newNums.Replace(',', '|'); buy.Nums = newNums; buy.NumsDetail = newNums; buy.BuyCount = 1; #endregion break; case 6: #region 冠亚军玩法 switch (buytype.Type) { case 2: //和值大小 case 3: //和值单双 #region ntype = new Random().Next(1, 10); //用Random().Next(0,1)总返回0; newNums = (ntype > 5) ? "1" : "0"; buy.Nums = newNums; buy.NumsDetail = newNums; buy.BuyCount = 1; #endregion break; default: //和值 #region 直接生成号码组号 strAll = "3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19"; newNums = CreateRandomString(null, strAll, nums, ""); newNums = newNums.Replace(',', '|'); buy.Nums = newNums; buy.NumsDetail = newNums; buy.BuyCount = 1; #endregion break; } #endregion break; } }
protected void Page_Load(object sender, EventArgs e) { try { _logic = new PK10(); string GameName = ub.GetSub("GameName", xmlPath); DateTime GameBeginTime, GameEndTime, CurrentTime; int GameOpenTimes, SaleTimes, OpenTimes, isRobot; string Robots; #region 读取配置项,并初始化变量 try { #region 游戏状态判断 string GameStatus = ub.GetSub("GameStatus", xmlPath); switch (GameStatus) { case "1": //维护 Utils.Safe(GameName); break; case "2": //内测(PK币) case "3": //公测(PK币) myIsTest = 1; break; case "4": //内测(酷币) myIsTest = 0; break; default: //正常 myIsTest = 0; break; } #endregion string ct1 = ub.GetSub("GameBeginTime", xmlPath); string ct2 = ub.GetSub("GameEndTime", xmlPath); GameBeginTime = Convert.ToDateTime(ct1); GameEndTime = Convert.ToDateTime(ct2); CurrentTime = DateTime.Now; GameOpenTimes = int.Parse(ub.GetSub("GameOpenTimes", xmlPath)); //游戏每天开奖期数 SaleTimes = int.Parse(ub.GetSub("SaleTimes", xmlPath)); //每期游戏开售分钟数 OpenTimes = int.Parse(ub.GetSub("OpenTimes", xmlPath)); //每期游戏开奖分钟数(在上期停售后N分钟后开奖) isRobot = int.Parse(ub.GetSub("isRobot", xmlPath)); //是否启用机器人的标志 Robots = ub.GetSub("Robots", xmlPath); //机器人列表 myIsRobot = (isRobot == 1) ? true : false; myRobots = Robots; myMinPayPrice = int.Parse(ub.GetSub("MinPayPrice", xmlPath)); //游戏最小下注单价 myMaxPayPrice = int.Parse(ub.GetSub("MaxPayPrice", xmlPath)); //游戏最大下注单价 } catch (Exception ex) { Response.Write("eror1:“读取配置项并初始化变量”出错!!!" + "</br>"); Response.Write(ex.Message.Replace("\n", "</br>")); return; } #endregion Response.Write("PK10每天的销售时间为" + GameBeginTime.ToShortTimeString() + "至" + GameEndTime.ToShortTimeString() + ",每" + SaleTimes.ToString() + "分钟一期,每天" + GameOpenTimes.ToString().Trim() + "期" + "<br/>"); if (!myIsRobot) { Response.Write("close1:" + "没设置开启机器人!"); return; } #region 排除非销售时间 //if (CurrentTime < GameBeginTime || CurrentTime > GameEndTime.AddMinutes(SaleTimes)) //{ // Response.Write("ok1:" + "非销售时间!"); // return; //} #endregion #region 机器人下注、兑奖 try { Response.Write("机器人...下注!" + "</br>"); OpenRobot(); Response.Write("ok1"); } catch (Exception ex) { Response.Write("error1:“机器人下注、兑奖”出错!!!" + "</br>"); Response.Write(ex.Message.Replace("\n", "</br>")); return; } #endregion } catch { Response.Write("error1"); } }
private void OpenRobot() { #region 取到机器人 int RobotID = GetRobot(); if (RobotID == 0) { Response.Write("没有可用的机器人!!!" + "</br>"); return; } string RobotName = new BCW.BLL.User().GetUsName(RobotID); #endregion #region 更新机器人在线时间 try { new BCW.BLL.User().UpdateTime(RobotID, 5); } catch { } #endregion // #region 注 PK10_List list = new PK10().GetCurrentSaleData();//取到可下注的期号记录 if (list == null) { Response.Write("没有开售记录!" + "</br>"); } else { PK10_Stutas status = new PK10().GetListStatus(list); if (status != PK10_Stutas.在售) { Response.Write("没有开售记录!" + "</br>"); } else { Response.Write("第" + list.No.Trim() + "期" + "</br>"); #region 注 PK10_Buy buy = CreateBuy(RobotID, RobotName, list);//生成购买记录 if (buy == null) { Response.Write("不能生成购买记录!" + "</br>"); } else { Response.Write(buy.BuyDescript + ",每注下:" + buy.BuyPrice.ToString().Trim() + "</br>"); #region 付款 string cPay = new PK10().Pay(buy, Utils.getPageUrl()); if (string.IsNullOrEmpty(cPay)) { Response.Write("成功付款!" + "</br>"); } else { Response.Write("付款失败...." + "</br>"); Response.Write(cPay.Replace("\n", "</br>") + "</br>"); } #endregion } #endregion } } #endregion // #region 兑奖 string caseFlag = _logic.CaseRobot(Utils.getPageUrl()); if (caseFlag == "") { Response.Write("成功兑奖!" + "</br>"); } else { Response.Write("兑奖失败...." + "</br>"); Response.Write(caseFlag.Replace("\n", "</br>") + "</br>"); } #endregion }