private static AvitoAds createAds(RootParsingObject discont, FullCatalogRoot fullCatalog, DateTime startTime) { var Ads = new AvitoAds(); Ads.StartTime = startTime; var menWomenOnlyListings = discont.listings.FindAll(x => x.category != "kids"); //var listingsMoreThan2SizesAvailable = menWomenOnlyListings.FindAll(x => x.sizes.Count > 2); var listings = menWomenOnlyListings; listings = listings.OrderBy(x => x.sku).ToList(); var listingCount = listings.Count; for (int i = 0; i < listingCount; i++) { var sneaker = listings[i]; var fcSneaker = fullCatalog.records.Find(x => x.sku == sneaker.sku); AvitoAd Ad = GetAdFromSneaker(sneaker, fcSneaker, Ads.StartTime, Ads.AdList.Count + 1, listingCount); if (Ad != null) { Ads.AdList.Add(Ad); } } _logger.Info("Кол-во листингов: " + listingCount); _logger.Info("Кол-во объявлений: " + Ads.AdList.Count); return(Ads); }
public static void SaveToJson(AvitoAds avitoAds, string folder) { var filename = Config.GetConfig().DirectoryPathExport + folder + @"\avito.json"; var text = JsonConvert.SerializeObject(avitoAds); System.IO.File.WriteAllText(filename, text); }
public static void SaveToXml(AvitoAds avito, string folder) { var filename = "Avito140417.xml"; var pathToXml = Config.GetConfig().DirectoryPathExport + folder + @"\" + filename; XmlTextWriter textWritter = new XmlTextWriter(pathToXml, Encoding.UTF8); textWritter.WriteStartDocument(); textWritter.WriteStartElement("Ads"); textWritter.WriteEndElement(); textWritter.Close(); XmlDocument xDoc = new XmlDocument(); xDoc.Load(pathToXml); //formatVersion XmlElement xRoot = xDoc.DocumentElement; XmlAttribute formatVersion = xDoc.CreateAttribute("formatVersion"); formatVersion.Value = "3"; xRoot.Attributes.Append(formatVersion); //target XmlAttribute target = xDoc.CreateAttribute("target"); target.Value = "Avito.ru"; xRoot.Attributes.Append(target); foreach (var ad in avito.AdList) { CreateAd(ad, xDoc); } xDoc.Save(pathToXml); }
/// <summary> /// беру файл оллстока и создаю xml файл для авито /// </summary> public static void Run() { DateTime startTime = new DateTime(2017, 04, 17, 07, 00, 00, DateTimeKind.Local); //запуск 17 апреля в 7 утра var allstock = AllStockExporter2.LoadLocalFile(); var fullCatalog = FullCatalog2.LoadLocalFile(); AvitoAds avito = createAds(allstock, fullCatalog, startTime); //удалим все детские кроссы avito.AdList.RemoveAll(x => x.Category == "Детская одежда и обувь"); SaveToJson(avito, FolderName); //AvitoAds avito2 = LoadFromJson(); SaveToXml(avito, FolderName); ReplaceChecialCharacterInXml(FolderName); UploadXmlToFtp(FolderName, "Avito"); }
/// <summary> /// беру файл оллстока и создаю xml файл для авито /// </summary> public static new void Run() { DateTime startTime = new DateTime(2017, 06, 04, 00, 00, 00, DateTimeKind.Local); // 8 мая в 7 утра //var allstock = AllStockExporter2.LoadLocalFile(); var discontSamara = DiscontMskNovoslobParser.LoadLocalFileJson(); var fullCatalog = FullCatalog2.LoadLocalFile(); AvitoAds avito = createAds(discontSamara, fullCatalog, startTime); //todo отсортировать артикулы по возрастанию или убыванию артикулов. чтобы всегда был единый порядок SaveToJson(avito, FolderName); //AvitoAds avito2 = LoadFromJson(); SaveToXml(avito, FolderName); ReplaceChecialCharacterInXml(FolderName); //UploadXmlToFtp(FolderName,"Avito"); }
private static AvitoAds createAds(Model.AllStock.AllStockRoot allstock, FullCatalogRoot fullCatalog, DateTime startTime) { var Ads = new AvitoAds(); Ads.StartTime = startTime; for (int i = 0; i < allstock.sneakers.Count; i++) { var sneaker = allstock.sneakers[i]; var fcSneaker = fullCatalog.records.Find(x => x.sku == sneaker.sku); AvitoAd Ad = GetAdFromSneaker(sneaker, fcSneaker, Ads.StartTime, i + 1, allstock.sneakers.Count); //тут есть ошибка. У аллстока может быть больше позиций чем для авито, так как некоторые ад могут нул вернуть и не добавиться. По правильному нужно сначала сделать первый прогон, заполнить все объявления и только потом добавлять дату постинга (зная точно кол-во объявлений) if (Ad != null) { Ads.AdList.Add(Ad); } } return(Ads); }