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); }
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); }
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()); }