private static DisneyGoogleItem Transform(DisneyEbayItem ebayItem) { return(new DisneyGoogleItem { ItemNo = ebayItem.ItemNo, Name = ebayItem.Name, EbayLink = ebayItem.EbayLink, Amount = ebayItem.Amount, BoxIncluded = ebayItem.BoxIncluded, COAIncluded = ebayItem.COAIncluded, IsRetired = ebayItem.IsRetired, Price = ebayItem.Price }); }
public List <DisneyEbayItem> GetSheetData() { SheetsService service = ConnectToGoogle(); string spreadsheetId = ConfigurationManager.AppSettings["GoogleSheetId"]; string range = sheet + "!A2:k"; SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(spreadsheetId, range); ValueRange response = request.Execute(); IList <IList <Object> > values = response.Values; List <DisneyEbayItem> items = new List <DisneyEbayItem>(); if (values != null && values.Count > 0) { foreach (var row in values) { string priceString = row[8].ToString().Replace("€", ""); DisneyEbayItem item = new DisneyEbayItem ( itemNo: (string)row[0], name: (string)row[1], ebayLink: (string)row[2], amount: int.Parse(row[3].ToString()), price: Convert.ToSingle(priceString), boxIncluded: row[4].ToString().ToLower().Equals("yes"), coaIncluded: row[5].ToString().ToLower().Equals("yes"), isRetired: row[6].ToString().ToLower().Equals("yes") ); items.Add(item); } } else { Console.WriteLine("No data found."); } return(items); }
public static List <DisneyGoogleItem> GetEstimateValueFromHtml(List <ItemHtml> itemHtmls, List <DisneyEbayItem> items) { List <DisneyGoogleItem> patchedItems = new List <DisneyGoogleItem>(); foreach (ItemHtml itemHtml in itemHtmls) { DisneyEbayItem item = items.Where(i => i.Name == itemHtml.ItemName).First(); Console.Write("Estimate value of \"" + item.Name + "\": "); if (itemHtml.Html == null) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(" 0 (NO EBAY LINK)"); Console.ForegroundColor = ConsoleColor.White; if (item != null) { DisneyGoogleItem transformedEmpty = Transform(item); transformedEmpty.EbayPrice = Convert.ToSingle(0); transformedEmpty.ScrapeDate = DateTime.UtcNow; patchedItems.Add(transformedEmpty); } continue; } HtmlDocument htmlDocument = itemHtml.Html; HtmlNode productListHtml = htmlDocument.DocumentNode.Descendants("ul") .Where(node => node.GetAttributeValue("class", "") .Equals("srp-results srp-list clearfix")).FirstOrDefault(); List <HtmlNode> listItems = productListHtml.Descendants("li") .Where(node => node.GetAttributeValue("class", "") .StartsWith("s-item")).ToList(); float estimatePrice = 0; double roundEstimatePrice = 0; int count = 0; string[] splitItemName = itemHtml.ItemName.Split(" "); foreach (HtmlNode listItem in listItems) { HtmlNode title = listItem.Descendants("h3") .Where(node => node.GetAttributeValue("class", "") .Contains("s-item__title")).FirstOrDefault(); if (splitItemName.Any(sim => title.InnerText.Contains(sim))) { HtmlNode priceParent = listItem.Descendants("span") .Where(node => node.GetAttributeValue("class", "") .Equals("s-item__price")).FirstOrDefault(); HtmlNode priceElement = priceParent.Descendants("span").FirstOrDefault(); string price = ""; if (priceElement != null) { string innerTextTransformed = priceElement.InnerText; if (innerTextTransformed.Contains(".")) { innerTextTransformed = innerTextTransformed.Replace(".", ""); } price = innerTextTransformed.Replace(",", ".").Replace("EUR ", ""); } else { string innerTextTransformed = priceParent.InnerText; if (innerTextTransformed.Contains(".")) { innerTextTransformed = innerTextTransformed.Replace(".", ""); } price = innerTextTransformed.Replace(",", ".").Replace("EUR ", ""); } Regex priceRegex = new Regex("^(?:\\d+|\\d*\\.\\d+|(?:\\d{1,3},)?(?:\\d{3},)*\\d{3}|(?:\\d{1,3},)?(?:\\d{3},)*\\d{3}\\.\\d+)"); if (!priceRegex.IsMatch(price)) { estimatePrice += 0; count++; continue; } estimatePrice += Convert.ToSingle(price); count++; } } if (estimatePrice == 0) { roundEstimatePrice = 0.00; } else { estimatePrice /= count; roundEstimatePrice = Math.Round(estimatePrice, 2); } Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("€" + roundEstimatePrice); Console.ForegroundColor = ConsoleColor.White; if (item != null) { DisneyGoogleItem googleItem = Transform(item); googleItem.EbayPrice = Convert.ToSingle(roundEstimatePrice); googleItem.ScrapeDate = DateTime.UtcNow; patchedItems.Add(googleItem); } else { throw new Exception("Could not find Disney item with the name " + itemHtml.ItemName); } } return(patchedItems); }