예제 #1
0
        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");
        }
예제 #5
0
        /// <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);
        }