Пример #1
0
        public static List <PriceSourceItemOld> GetPrice(GPUOld gpuOld, PriceSourceOld priceSource)
        {
            List <PriceSourceItemOld> priceSourceItems = new List <PriceSourceItemOld>();

            WriteLine($"Getting Price From {priceSource.Name} For GPU {gpuOld.Name}");
            //is it an api or something, else we are going to scrape the shit out of it...
            if (priceSource.PriceSourceAction != null)
            {
                List <PriceSourceItemOld> result = priceSource.PriceSourceAction.Invoke(priceSource.PriceSourceItemIdentifier);
                priceSourceItems.AddRange(result);
            }
            else
            {
                string response  = GetHttpResponseTextWithJavascript(priceSource.URL);
                string PriceText = GetTextFromHtmlStringByCssSelector(response, priceSource.Selector);

                string nameText = GetTextFromHtmlStringByCssSelector(response, priceSource.ItemNameSelector);
                if (string.IsNullOrEmpty(PriceText))
                {
                    return(priceSourceItems);
                }

                string currency = "USD";
                string imageUrl = null;
                if (!string.IsNullOrWhiteSpace(priceSource.ImageUrlSelector))
                {
                    imageUrl = GetTextFromHtmlStringByCssSelector(response, priceSource.ImageUrlSelector);
                }

                if (PriceText.IndexOf("$") > -1)
                {
                    PriceText = PriceText.Remove(PriceText.IndexOf("$"), 1);
                    currency  = "USD";
                }
                if (PriceText.IndexOf("SR") > -1)
                {
                    PriceText = PriceText.Remove(PriceText.IndexOf("SR"), 2);
                    currency  = "SAR";
                }

                PriceSourceItemOld priceSourceItem = new PriceSourceItemOld()
                {
                    Name          = nameText,
                    Price         = double.Parse(PriceText),
                    Selector      = priceSource.Selector,
                    PriceCurrency = currency
                };
                if (!string.IsNullOrWhiteSpace(imageUrl))
                {
                    priceSourceItem.ImageUrl = imageUrl;
                }

                priceSourceItems.Add(priceSourceItem);
            }

            return(priceSourceItems);
        }
Пример #2
0
        public void TestMethod1()
        {
            string         asinNumber  = "B06Y15M48C";
            PriceSourceOld priceSource = new PriceSourceOld()
            {
                PriceSourceItemIdentifier = asinNumber,
                PriceSourceAction         = AmazonService.SearchItemLookupOperationOld
            };
            GPUOld gpuOld = new GPUOld()
            {
                PriceSources = new List <PriceSourceOld>()
                {
                    priceSource
                },
            };

            InsighterService.GetPrice(gpuOld, priceSource);
        }
Пример #3
0
        private static PriceSourceItemOld FetchGpu(string asinNumber)
        {
            PriceSourceOld priceSource = new PriceSourceOld()
            {
                PriceSourceItemIdentifier = asinNumber,
                PriceSourceAction         = AmazonService.SearchItemLookupOperationOld
            };

            GPUOld gpuOld = new GPUOld()
            {
                PriceSources = new List <PriceSourceOld>()
                {
                    priceSource
                },
            };

            List <PriceSourceItemOld> priceSourceItems = InsighterService.GetPrice(gpuOld, priceSource);

            return(priceSourceItems?.FirstOrDefault());
        }