Esempio n. 1
0
        private static IchibaItem IchibaItemFromXmlNode(HtmlAgilityPack.HtmlNode node)
        {
            IchibaItem resultItem     = new IchibaItem();
            var        ichibaItemNode = node.GetElementByTagName("div");

            resultItem.Id = ichibaItemNode.Id.Split('_').Last();

            // Thumbnail
            {
                var img = ichibaItemNode.GetElementByClassName("thumbnail")
                          .GetElementByTagName("div")
                          .GetElementByTagName("a")
                          .GetElementByTagName("img");

                var url = img?.GetAttributeValue("src", "");
                if (url != null)
                {
                    resultItem.ThumbnailUrl = new Uri(url);
                }
            }

            // amazonLink + Title
            {
                var amazonNode = ichibaItemNode.GetElementByClassName("itemname")
                                 .GetElementByTagName("a");

                var title      = amazonNode.InnerText;
                var amazonLink = amazonNode.GetAttributeValue("href", "");
                resultItem.AmazonItemLink = new Uri(amazonLink);
                resultItem.Title          = System.Net.WebUtility.HtmlDecode(title);
            }

            // maker
            {
                var makerNode = ichibaItemNode.GetElementByClassName("maker");
                var makerName = makerNode?.InnerText;
                resultItem.Maker = System.Net.WebUtility.HtmlDecode(makerName);
            }

            // price + discountText
            {
                var priceNode = ichibaItemNode.GetElementByClassName("price");
                if (priceNode != null)
                {
                    resultItem.Price = priceNode.InnerText;

                    var discountTextNode = priceNode.GetElementByTagName("span");
                    if (discountTextNode != null)
                    {
                        resultItem.DiscountText = discountTextNode.InnerText;
                    }
                }
            }

            {
                var releaseNode = ichibaItemNode.GetElementByClassName("release")
                                  ?.GetElementByTagName("span");
                if (releaseNode != null)
                {
                    resultItem.Reservation = new IchibaItemReservation()
                    {
                        ReleaseDate = releaseNode.InnerText
                    };
                }
            }


            // action buy click
            var actionNode = ichibaItemNode.GetElementByClassName("action");

            if (actionNode != null)
            {
                IchibaItemSellBase sellInfo = null;
                if (resultItem.Reservation != null)
                {
                    sellInfo = resultItem.Reservation;
                    var reservationNode = actionNode.GetElementByClassName("reservation");
                    if (reservationNode != null)
                    {
                        resultItem.Reservation.ReservationActionText = reservationNode.InnerText;
                    }

                    var buyYesterdayNode = actionNode.GetElementByClassName("reservationYesterday");
                    if (buyYesterdayNode != null)
                    {
                        resultItem.Reservation.YesterdayReservationActionText = buyYesterdayNode.InnerText;
                    }
                }
                else
                {
                    sellInfo = resultItem.Sell = new IchibaItemSell();
                    var buyNode = actionNode.GetElementByClassName("buy");
                    if (buyNode != null)
                    {
                        resultItem.Sell.BuyActionText = buyNode.InnerText;
                    }

                    var buyYesterdayNode = actionNode.GetElementByClassName("buyYesterday");
                    if (buyYesterdayNode != null)
                    {
                        resultItem.Sell.YesterdayBuyActionText = buyYesterdayNode.InnerText;
                    }
                }

                var clickNode = actionNode.GetElementByClassName("click");
                if (clickNode != null)
                {
                    sellInfo.ClickActionText = clickNode.InnerText;
                }

                var lastNode = actionNode.GetElementsByTagName("span").LastOrDefault();
                if (lastNode != null && !lastNode.Attributes.Contains("class"))
                {
                    sellInfo.ClickInThisContentText = lastNode.InnerText;
                }
            }

            {
                var goIchibaNode = ichibaItemNode.GetElementByClassName("goIchiba")
                                   ?.GetElementByTagName("a");

                if (goIchibaNode != null)
                {
                    var ichibaLink = goIchibaNode.GetAttributeValue("href", "");
                    resultItem.IchibaUrl = new Uri(ichibaLink);
                }
            }


            return(resultItem);
        }