public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.ProshopUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.ProshopUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.SelectNodes("//li[contains(@class, 'toggle')]").ToList(); foreach (var product in products) { var inStock = product.SelectSingleNode(".//div[contains(@class, 'site-stock-text hidden-xs')]"); if (inStock != null && !string.IsNullOrEmpty(inStock.InnerText)) { var decode = HttpUtility.HtmlDecode(inStock.InnerText); var countN = 0; if (decode.Contains("dager til levering")) { var productLink = product.SelectSingleNode(".//a[contains(@class, 'site-product-link')]"); if (productLink != null) { var hrefValue = productLink.GetAttributeValue("href", string.Empty); countN = await GetProshopCount("https://www.proshop.no" + hrefValue); list.Add(new InStockItem { Url = "https://www.proshop.no" + hrefValue, Name = item.Name, Count = countN, Channel = item.DiscordChannel, Store = "Proshop.no", ChannelId = item.DiscordChannelId }); } } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.MulticomUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.MulticomUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.SelectNodes("//div[contains(concat(' ', @class, ' '), ' b-product-list__item ')]"); foreach (var product in products) { var inStock = product.SelectSingleNode(".//span[contains(@class, 'b-stock-info__amount')]"); if (inStock != null && !string.IsNullOrEmpty(inStock.InnerText)) { var decode = HttpUtility.HtmlDecode(inStock.InnerText); var countN = GetCountInStock(decode); var productLink = product.SelectSingleNode(".//a"); if (productLink != null) { var itemCheck = item.Name.Split(' ').Last(); var hrefValue = productLink.GetAttributeValue("href", string.Empty); if (hrefValue.Contains(itemCheck)) { list.Add(new InStockItem { Url = "https://multicom.no" + hrefValue, Name = item.Name, Count = countN, Channel = item.DiscordChannel, Store = "Multicom.no", ChannelId = item.DiscordChannelId }); } } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.KomplettUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.KomplettUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.Descendants().Where(x => x.HasClass("product-list-item")).ToList(); foreach (var product in products) { var inStock = product.Descendants().FirstOrDefault(x => x.HasClass("stockstatus-stock-details")); if (inStock != null && !string.IsNullOrEmpty(inStock.InnerText)) { var decode = HttpUtility.HtmlDecode(inStock.InnerText); var countN = GetCountInStock(decode); var regex = new Regex(@"(?:^|\W)på lager.$(?:$|\W)"); if (regex.IsMatch(decode)) { var productLink = product.Descendants().FirstOrDefault(x => x.HasClass("product-link")); if (productLink != null) { var hrefValue = productLink.GetAttributeValue("href", string.Empty); list.Add(new InStockItem { Url = "https://komplett.no" + hrefValue, Name = item.Name, Count = countN, Channel = item.DiscordChannel, Store = "Komplett.no", ChannelId = item.DiscordChannelId }); } } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.PowerUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.PowerUrl, Encoding.UTF8, CancellationToken.None); var angularfuckery = doc.DocumentNode.SelectSingleNode(".//power-meta[contains(@id, 'angular-page-model')]"); var data = angularfuckery.GetAttributeValue("data", null); if (data != null) { var decodedByteHtml = Convert.FromBase64String(data); var body = JsonSerializer.Deserialize <PowerProducts>(decodedByteHtml); if (body != null && body.Model != null && body.Model.ProductWrapper != null && body.Model.ProductWrapper.Products.Length > 0) { foreach (var product in body.Model.ProductWrapper.Products) { if (product.StockCount > 0 && product.CategoryId == 1929) { list.Add(new InStockItem { Url = "https://power.no" + product.Url, Name = item.Name, Count = product.StockCount.Value, Channel = item.DiscordChannel, Store = body.Model.SiteName, ChannelId = item.DiscordChannelId }); } } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.ElkjopUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.ElkjopUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.Descendants().Where(x => x.HasClass("mini-product")).ToList(); foreach (var product in products) { var inStock = product.Descendants().FirstOrDefault(x => x.HasClass("checkout-spacing")); if (inStock != null && !string.IsNullOrEmpty(inStock.InnerText)) { var decode = HttpUtility.HtmlDecode(inStock.InnerText); var countN = GetCountInStock(decode); var productLink = product.Descendants().FirstOrDefault(x => x.HasClass("product-image-link")); if (productLink != null) { var hrefValue = productLink.GetAttributeValue("href", string.Empty); list.Add(new InStockItem { Url = hrefValue, Name = item.Name, Count = countN, Channel = item.DiscordChannel, Store = "Elkjop.no", ChannelId = item.DiscordChannelId }); } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.NetonnetUrl)) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.NetonnetUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.SelectNodes("//div[contains(concat(' ', @class, ' '), 'cProductItem')]"); if (products != null) { foreach (var product in products) { var inStock = product.SelectSingleNode(".//span[contains(@class, 'stockStatusInStock')]"); if (inStock != null) { var productLink = product.SelectSingleNode(".//a"); if (productLink != null) { var hrefValue = productLink.GetAttributeValue("href", string.Empty); list.Add(new InStockItem { Url = "https://netonnet.no" + hrefValue, Name = item.Name, Count = 0, Channel = item.DiscordChannel, Store = "NetOnNet.no", ChannelId = item.DiscordChannelId }); } } } } return(list); }
public async Task <IEnumerable <InStockItem> > GetItemInStock(ItemsIWant item) { var list = new List <InStockItem>(); if (string.IsNullOrEmpty(item.KomplettUrl)) { return(list); } if (!item.Name.Contains("Komplett a240 Epic Gaming PC")) { return(list); } var webCrawler = new HtmlWeb() { AutoDetectEncoding = false, OverrideEncoding = Encoding.UTF8 }; var doc = await webCrawler.LoadFromWebAsync(item.KomplettUrl, Encoding.UTF8, CancellationToken.None); var products = doc.DocumentNode.SelectNodes("//div[contains(concat(' ', @class, ' '), ' buy-button-section ')]"); foreach (var product in products) { var inStock = product.SelectSingleNode(".//div[contains(@class, 'buy-button')]"); if (inStock != null && inStock.InnerText.Contains("Legg i handlevogn")) { list.Add(new InStockItem { Url = item.KomplettUrl, Name = item.Name, Count = 0, Channel = item.DiscordChannel, Store = "Komplett.no", ChannelId = item.DiscordChannelId }); } } return(list); }