コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
 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
     });
 }
コード例 #4
0
        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);
        }
コード例 #5
0
 public FoxePageTreeViewItem(FoxePage foxePage)
 {
     this.FoxePage = foxePage;
     this.Tag      = foxePage;
     CreatePageTreeViewItem();
 }
コード例 #6
0
 public IList <FoxeProduct> GetProductsUnderPage(FoxePage foxePage)
 {
     return(crawler.GetProductsUnderPage(foxePage));
 }
コード例 #7
0
        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);
        }