private FoxePageTreeViewItem CreateExapndablePageTreeItem(FoxePage foxePage) { FoxePageTreeViewItem item = new FoxePageTreeViewItem(foxePage); //item.Items.Add(new FoxeProcessingTreeViewItem()); if (foxePage.Products.Count >= 1) { item.Items.Add(new FoxeProcessingTreeViewItem()); } return(item); }
public IList <FoxeProduct> GetProductsUnderPage(FoxePage foxePage) { IList <FoxeProduct> products; string productsUnderCategory_PageUrl = CrawlerHelper.GetProductsUnderCategory_PageUrl() .Replace("{{CATEGORY_NAME}}", foxePage.Category.SEOFriendlyName) .Replace("{{PAGE_NO}}", foxePage.PageNo.ToString()); HtmlDocument productsCategoryPageDocument = webClientManager.DownloadHtmlDocument(productsUnderCategory_PageUrl); products = foxEbookParser.ParseForProductsUnderPage(productsCategoryPageDocument, foxePage); return(products); }
public Job(FoxePage foxePage) { JobNotifications = Global.JobNotifications; Id = new Guid(); StartTime = DateTime.Now; TimeTaken = TimeSpan.Zero; FoxePage = foxePage; JobStatus = JobStatus.Created; JobNotifications.OnJobCreated(new JobCreatedEventArgs() { Job = this }); }
public IList <FoxeProduct> ParseForProductsUnderPage(HtmlDocument document, FoxePage foxePage) { IList <FoxeProduct> products = new List <FoxeProduct>(); HtmlNodeCollection productNodes = document.DocumentNode.SelectNodes("//div[@class='row book-top']"); foreach (var productnode in productNodes) { FoxeProduct product = new FoxeProduct(); product.CoverPageUrl = productnode.ChildNodes["div"].ChildNodes["img"].Attributes["src"].Value; var productDetailsPageUrl = CrawlerHelper.GetSchemeDomainUrl() + productnode.Descendants("a").Last().Attributes["href"].Value; HtmlDocument productDetailPageDocument = new WebClientManager().DownloadHtmlDocument(productDetailsPageUrl); ParseProductDetailPageUpdateProduct(productDetailPageDocument, product); product.Category = foxePage.Category; product.Page = foxePage; products.Add(product); } return(products); }
public FoxePageTreeViewItem(FoxePage foxePage) { this.FoxePage = foxePage; this.Tag = foxePage; CreatePageTreeViewItem(); }
public IList <FoxeProduct> GetProductsUnderPage(FoxePage foxePage) { return(crawler.GetProductsUnderPage(foxePage)); }
private async Task AddProductsUnderPage(FoxePageTreeViewItem pageTreeViewItem, FoxePage foxePage) { var synchronizationContext = TaskScheduler.FromCurrentSynchronizationContext(); var cancellationToken = new CancellationToken(); await Task.Factory.StartNew(() => { pageTreeViewItem.Items.Clear(); foreach (var foxeProduct in foxePage.Products) { var productTreeViewItem = new FoxeProductTreeViewItem(foxeProduct); productTreeViewItem.Tag = foxeProduct; pageTreeViewItem.Items.Add(productTreeViewItem); } }, cancellationToken, TaskCreationOptions.None, synchronizationContext); }