示例#1
0
        private List <TengxunIndexInfoEntity> GetIndexData(List <string> codes)
        {
            var separator = Convert.ToChar(10);
            var list      = new List <TengxunIndexInfoEntity>();
            var container = new List <string>();

            if (codes != null || codes.Count > 0)
            {
                codes.ForEach(cd =>
                {
                    var code = cd.Trim().ToLower();
                    if (!container.Contains(code))
                    {
                        container.Add(code);
                    }
                });
                var scodes = string.Join(",", container);

                //var sb = new StringBuilder();
                //container.ForEach(cd =>
                //{
                //    var market = TengxunIndexInfoEntity.TellMarket(cd);
                //    if (market == MARKET.none) return;
                //    var ncode = market.ToString() + cd;
                //    if (sb.Length > 0) sb.Append(",");
                //    sb.Append(ncode);
                //});

                var parameters = new Dictionary <string, string>();
                parameters.Add("q", scodes);
                var script = WebRequestor.Send(url, parameters, WebRequestor.RequestMethod.get, Encoding.GetEncoding("GB2312"));

                var scripts = (!string.IsNullOrWhiteSpace(script)) ? new List <string>(script.Split(new char[] { separator })) : new List <string>();
                scripts.ForEach(scrpt =>
                {
                    TengxunIndexInfoEntity info = null;
                    TryParse(scrpt, out info);
                    if (info != null)
                    {
                        list.Add(info);
                    }
                });
            }
            return(list);
        }
示例#2
0
        private bool TryParse(string script, out TengxunIndexInfoEntity entity)
        {
            entity = null;
            if (string.IsNullOrWhiteSpace(script))
            {
                return(false);
            }
            var match  = Regex.Match(script, "^[a-zA-Z0-9/_]+[=]{1}\"(?<data>.*)\";$", RegexOptions.IgnoreCase | RegexOptions.Singleline);
            var result = match.Success;

            if (result)
            {
                var data = match.Groups["data"].Value;
                if (string.IsNullOrWhiteSpace(data))
                {
                    return(false);
                }

                string[] temp = data.Split('~');
                if (temp.Length < 50)
                {
                    return(false);
                }

                entity                = new TengxunIndexInfoEntity();
                entity.Name           = temp[1];
                entity.Code           = temp[2];
                entity.Current        = (string.IsNullOrWhiteSpace(temp[3])) ? 0m : decimal.Parse(temp[3]);
                entity.YesterdayClose = (string.IsNullOrWhiteSpace(temp[4])) ? 0m : decimal.Parse(temp[4]);
                entity.TodayOpen      = (string.IsNullOrWhiteSpace(temp[5])) ? 0m : decimal.Parse(temp[5]);

                var stime  = temp[30];
                var year   = Convert.ToInt32(stime.Substring(0, 4));
                var month  = Convert.ToInt32(stime.Substring(4, 2));
                var day    = Convert.ToInt32(stime.Substring(6, 2));
                var hour   = Convert.ToInt32(stime.Substring(8, 2));
                var minute = Convert.ToInt32(stime.Substring(10, 2));
                var second = Convert.ToInt32(stime.Substring(12, 2));
                entity.Time = new DateTime(year, month, day, hour, minute, second);

                entity.High = (string.IsNullOrWhiteSpace(temp[33])) ? 0m : decimal.Parse(temp[33]);
                entity.Low  = (string.IsNullOrWhiteSpace(temp[34])) ? 0m : decimal.Parse(temp[34]);

                entity.GVolAmount = (string.IsNullOrWhiteSpace(temp[36])) ? 0m : int.Parse(temp[36]);
                entity.GVolMoney  = (string.IsNullOrWhiteSpace(temp[37])) ? 0m : decimal.Parse(temp[37]);

                var date      = entity.Time.Date.ToString("yyyy-MM-dd");
                var list      = entity.IndexList;
                var subscript = temp[29];
                var scripts   = subscript.Split(new char[] { '|' });
                var code      = entity.Code;
                if (scripts != null && scripts.Length > 0)
                {
                    new List <string>(scripts).ForEach(s =>
                    {
                        var scrpts = s.Split(new char[] { '/' });
                        if (scrpts.Length < 6)
                        {
                            return;
                        }
                        var ent      = new ItemInfoEntity(code);
                        ent.CodeType = CODETYPE.index;
                        ent.Time     = DateTime.Parse(string.Format("{0} {1}", date, scrpts[0]));
                        ent.Value    = (string.IsNullOrWhiteSpace(scrpts[1])) ? 0m : decimal.Parse(scrpts[1]);
                        ent.Amount   = (string.IsNullOrWhiteSpace(scrpts[2])) ? 0m : decimal.Parse(scrpts[2]);
                        ent.Type     = (string.IsNullOrWhiteSpace(scrpts[3])) ? TRADE.none : "S".Equals(scrpts[3].Trim().ToUpper()) ? TRADE.sale : "B".Equals(scrpts[3].Trim().ToUpper()) ? TRADE.buy : "M".Equals(scrpts[3].Trim().ToUpper()) ? TRADE.middle : TRADE.none;
                        ent.Money    = (string.IsNullOrWhiteSpace(scrpts[4])) ? 0m : decimal.Parse(scrpts[4]);
                        list.Add(ent);
                    });
                }
                if (entity.IndexList != null && entity.IndexList.Count > 0)
                {
                    entity.IndexList.Sort(new IndexSort());
                }
            }
            return(result);
        }