Esempio n. 1
0
        public Sneaker ParseOneSneaker(Sneaker @sneaker)
        {
            var document = GetHtmlPage(sneaker.link);

            _logger.Info("parsing... link:" + sneaker.link);

            //sku
            sneaker.sku = document.QuerySelector("span.editable").InnerHtml;
            _logger.Info("sneaker.sku = " + sneaker.sku);

            if (string.IsNullOrWhiteSpace(sneaker.sku.Trim()))
            {
                _logger.Warn("sku is empty");
                return(null);
            }

            //color
            //var colorHTML = document.All.Where(m => m.LocalName == "span" && m.Id == "product-color").First().InnerHtml;
            //sneaker.color = colorHTML;

            //title
            //добавляем цвет к тайтлу
            var title = document.QuerySelector("div.page_title").InnerHtml.ToUpper().Trim();

            sneaker.title = title.Replace(" - ", " ");
            _logger.Info("sneaker.title = " + sneaker.title);

            if (string.IsNullOrWhiteSpace(sneaker.title.Trim()))
            {
                _logger.Warn("title is empty");
                return(null);
            }

            //images
            //var imageContainer = document.All.Where(m => m.LocalName == "div" && m.Id == "thumbnail-wrapper").First();
            var images = document.QuerySelector("#thumbs_list_frame").QuerySelectorAll("li");

            _logger.Info("images count = " + images.Length);
            //List<String> listImage = new List<String>();
            foreach (var image in images)
            {
                var imageString = image.QuerySelector("a").GetAttribute("href");
                //string imageString = SITEURL + imageHTML.GetAttribute("data-large-image");
                if (imageString.Contains(".jpg"))
                {
                    sneaker.images.Add(imageString);
                    _logger.Info("imageString = " + imageString);
                }
                else
                {
                    _logger.Warn("wrong image " + sneaker.sku);
                }
            }
            if (sneaker.images.Count == 0)
            {
                _logger.Warn("no images " + sneaker.sku);
            }

            //sizes
            var sizes = document.QuerySelectorAll("select.attribute_select option");

            _logger.Info("sizes.count = " + sizes.Length);
            for (int i = 0; i < sizes.Count(); i++)
            {
                var sep      = new char[] { '-' };
                var sizeUsEu = sizes[i].InnerHtml.Split(sep);
                var sizeUS   = sizeUsEu[0].Replace("US", "").Trim();
                var sizeEU   = sizeUsEu[1].Trim();
                _logger.Info("size: " + sizeUS + " US " + sizeEU + " EU");
                //string sizeUS = sizes[i].InnerHtml.Trim();
                SneakerSize size = new SneakerSize(sizeUS);
                size.sizeEU   = sizeEU;
                size.quantity = 1;
                sneaker.sizes.Add(size);
            } //sizes

            //chech wait release
            var wait = document.QuerySelector("#axproductlaunch");

            if (wait != null)
            {
                var price = document.QuerySelector("#our_price_display").InnerHtml.Trim();
                var br    = "\n";
                var m     = sneaker.title + br;
                m += "date: " + wait.InnerHtml.Replace("\n", "").Trim() + br;
                m += "price: " + price + br;
                m += "<a href=\"" + sneaker.images[0] + "\">image</a>" + br;
                m += "<a href=\"" + sneaker.link + "\">" + NAME + "</a>" + br;
                _logger.Info("This item is wait release");
                MyTelegram.PostMessageWaitRelease(m);
                return(null);
            }

            //categorySneakerFullCatalog and sex
            if (sneaker.sizes.Count > 0)
            {
                return(sneaker);
            }
            else
            {
                _logger.Info("sizes count = 0");
                return(null);
            }
        }