Esempio n. 1
0
        public async void RunExecute()
        {
            try
            {
                if (!ValidatePaths())
                {
                    return;
                }
                IFilesLoader filesLoader = new FilesLoader();
                CDBuilder    cdBuilder   = new CDBuilder();
                foreach (var(nameInIso, fullName) in filesLoader.GetFiles(SourcePath))
                {
                    cdBuilder.AddFile(nameInIso, fullName);
                }

                IsNotRunning = false;
                await cdBuilder.BuildAsync(DestinationPath,
                                           (current, max) => ProgressValue = current / (double)max * 100);

                ProgressValue = 100;
                IsNotRunning  = true;
                MessageBox.Show("Operation complete");
            }
            catch (Exception exception)
            {
                MessageBox.Show(
                    $"Problem has occurred during processing. Details below:{Environment.NewLine}{exception.Message}");
                IsNotRunning  = true;
                ProgressValue = 0;
            }
        }
Esempio n. 2
0
        public async Task <ActionResult> ParseStart()
        {
            int start = 1;
            int end   = 1;

            if (Request.Params["start"] != null)
            {
                start = Int32.Parse(Request.Params["start"]);
            }

            if (Request.Params["end"] != null)
            {
                end = Int32.Parse(Request.Params["end"]);
            }

            List <Product> newProductsList = new List <Product>();

            ParserWorker <List <Product> > parser = new ParserWorker <List <Product> >(
                new SiteParser(),
                new SiteSettings(start, end)
                );

            for (int i = parser.Settings.StartPoint; i <= parser.Settings.EndPoint; i++)
            {
                var source = await parser.Loader.GetSourceByPageId(i);

                var domParser = new HtmlParser();
                var document  = await domParser.ParseAsync(source);

                var result = parser.Parser.Parse(document);

                newProductsList.AddRange(result);
            }

            foreach (var product in newProductsList)
            {
                Product matches = db.Products.FirstOrDefault(p => p.Name == product.Name);

                if (matches == null)
                {
                    string imgPath  = parser.Settings.BaseUrl + product.ImgUrl;
                    string fileName = System.IO.Path.GetFileName(imgPath);
                    string newPath  = Server.MapPath("~/Images/Catalog/") + System.IO.Path.GetFileName(fileName);

                    await FilesLoader.DownloadFileAsync(imgPath, newPath);

                    product.ImgName = fileName;

                    db.Products.Add(product);
                }
            }

            await db.SaveChangesAsync();

            return(RedirectToAction("Index"));
        }