private void GetOptions(XymogenProduct p) { using (WebClient wc = new WebClient()) { wc.Headers[HttpRequestHeader.ContentType] = "application/json"; string response = wc.UploadString("https://www.xymogen.com/usercontrols/utilities/ProductVariants.asmx/LoadProductVariantOptions", $"{{MasterId: {p.MasterId}, variantSelections: null, ProductID: 0, Favorites: false}}"); Wrapper o = JsonConvert.DeserializeObject <Wrapper>(response); string[] parts = o.d.Substring(1, o.d.Length - 2).Split("],"); p.Options = JsonConvert.DeserializeObject <List <XymogenProduct.Option> >(parts[0].Trim() + "]"); int index = 1; foreach (XymogenProduct.Option t in p.Options) { string s = parts[index].Trim() + "]"; t.values = JsonConvert.DeserializeObject <List <XymogenProduct.Value> >(s); index++; } List <combos> vars = buildVariants(p.Options, 0); foreach (combos variant in vars) { wc.Headers[HttpRequestHeader.ContentType] = "application/json"; response = wc.UploadString("https://www.xymogen.com/usercontrols/utilities/ProductVariants.asmx/LoadProductVariantOptions", $"{{MasterId: {p.MasterId}, variantSelections: [{string.Join(",", variant.ids)}], ProductID: 0, Favorites: false}}"); o = JsonConvert.DeserializeObject <Wrapper>(response); if (!string.IsNullOrEmpty(o.d)) { parts = o.d.Substring(1, o.d.Length - 2).Split("],"); XymogenProduct.Variant ppp = JsonConvert.DeserializeObject <List <XymogenProduct.Variant> >(parts.Last())[0]; ppp.Option1 = variant.values[0]; if (variant.values.Count > 1) { ppp.Option2 = variant.values[1]; } if (variant.values.Count > 2) { ppp.Option3 = variant.values[2]; } ppp.SKU = $"XMOGEN-{ppp.ProductID}"; ppp.BarCode = GetUPCCodes(ppp.ProductID); p.Variants.Add(ppp); } } } }
private static async Task Supplement2Async() { List <InvSupplement> inv2 = JsonConvert.DeserializeObject <List <InvSupplement> >(File.ReadAllText(@"C:\Users\Robert\Documents\supplements.json")); List <InvSupplement> inv = inv2.Where(i => i.Company == "Xymogen" && i.Active && !i.Imported && i.XymogenId != 0).ToList(); Dictionary <long, XymogenScraper.XymogenProduct> prods = GetCacheProductInfo(); Dictionary <long, List <int> > toImport = new Dictionary <long, List <int> >(); foreach (InvSupplement i in inv) { List <XymogenScraper.XymogenProduct> p = prods.Values.Where(xp => xp.Variants.Any(xv => xv.ProductID == i.XymogenId)).ToList(); if (p.Count == 1) { if (toImport.ContainsKey(p[0].MasterId)) { if (!toImport[p[0].MasterId].Contains(i.XymogenId)) { toImport[p[0].MasterId].Add(i.XymogenId); } else { System.Console.WriteLine($"{i.Name} - {i.XymogenId} - {i.Size} - {i.Flavor}"); } } else { toImport.Add(p[0].MasterId, new List <int>() { i.XymogenId }); } } else { System.Console.WriteLine($"{i.Name} - {i.XymogenId} - {i.Size} - {i.Flavor}"); } } foreach (KeyValuePair <long, List <int> > vp in toImport) { XymogenProduct prod = prods.Values.FirstOrDefault(p => p.MasterId == vp.Key); if (prod != null) { prod.Variants.RemoveAll(v => !vp.Value.Contains(v.ProductID)); foreach (InvSupplement i in inv2.Where(iv => vp.Value.Contains(iv.XymogenId))) { i.Imported = true; XymogenProduct.Variant v = prod.Variants.FirstOrDefault(pv => pv.ProductID == i.XymogenId); if (v != null) { if (i.Retail == 0.00m) { } v.Price = i.Retail; } else { } } System.Console.Write($"{prod.Name} "); await BuildProductAsync(prod); File.WriteAllText(@"C:\Users\Robert\Documents\supplements.json", JsonConvert.SerializeObject(inv2, Formatting.Indented, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })); System.Console.WriteLine($"completed"); } else { } } }