Exemple #1
0
        private async Task <IEnumerable <ProductDTO> > GetByProviderAsync(string provider, string query)
        {
            var products = Enumerable.Empty <ProductDTO>();

            switch (provider.ToLower())
            {
            case "amazon":
                products = await AmazonWebScraper.GetProductsByQueryAsync(query);

                return(products);

            case "bestbuy":
                products = await BestBuyWebScraper.GetProductsByQueryAsync(query);

                return(products);

            case "costco":
                products = await CostcoWebScraper.GetProductsByQueryAsync(query);

                return(products);

            case "ebay":
                products = await EbayWebScraper.GetProductsByQueryAsync(query);

                return(products);

            case "sams":
                products = await SamsWebApiScraper.GetProductsByQueryAsync(query);

                return(products);

            case "target":
                products = await TargetWebApiScraper.GetProductsByQueryAsync(query);

                return(products);

            case "walmart":
                products = await WalmartWebScraper.GetProductsByQueryAsync(query);

                return(products);

            default:
                return(products);
            }
        }
Exemple #2
0
        public static async Task <IEnumerable <ProductDTO> > GetAllProductsFromScrapersAsync(string query)
        {
            var getAmazonProductsTask  = AmazonWebScraper.GetProductsByQueryAsync(query);
            var getBestBuyProductsTask = BestBuyWebScraper.GetProductsByQueryAsync(query);
            var getCostcoProductsTask  = CostcoWebScraper.GetProductsByQueryAsync(query);
            var getEbayProductsTask    = EbayWebScraper.GetProductsByQueryAsync(query);
            var getSamsProductsTask    = SamsWebApiScraper.GetProductsByQueryAsync(query);
            var getTargetProductsTask  = TargetWebApiScraper.GetProductsByQueryAsync(query);
            var getWalmartProductsTask = WalmartWebScraper.GetProductsByQueryAsync(query);
            var products = new List <ProductDTO>();

            products.AddRange(await getAmazonProductsTask);
            products.AddRange(await getBestBuyProductsTask);
            products.AddRange(await getCostcoProductsTask);
            products.AddRange(await getEbayProductsTask);
            products.AddRange(await getSamsProductsTask);
            products.AddRange(await getTargetProductsTask);
            products.AddRange(await getWalmartProductsTask);

            return(products);
        }
        //This method works by first checking with the data(passed into the method's argument) is an Isbn. If it is not an isbn number it will first collect book data from the Google books api and uses the output to retrieve the
        //isbn number and this is then used to get book data from the Goodreads api. If the data is an isbn number then get the book data from the Google books and Goodreads apis. Afterwards, it then uses the data retrieved from
        //the Goodreads api to initalise the GoodreadsModel. This model along with the GoogleBookModel is used to set the description to the BookModel object which involves working the Python text summariser to receive a
        //summarised description of the book which is what is assigned to the BookModel object. It then proceeds use the AmazonWebScraper to scrape the relevent book data from the relevent product page and this returns
        //and AmazonModel object. All three models( GoodreadsModel, GoogleBooksModel and AmazonModel) were used to initialise the attributes for the BookModel object.
        public async void CollectDataFromSources(string data)
        {
            bookModel = new BookModel();
            server    = new TCPServer();
            dominantColorWebScraper = new DominantColorWebScraper();
            amazonWebScraper        = new AmazonWebScraper();
            AmazonModel amazonBookData = null;

            IWebDriver driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location));

            //If the data doesnt contain the isbn then the isbn will be initially retrieved
            //from the google books api which is then passed into the good reads api solution
            var dataContainsIsbn = data.All(char.IsDigit);

            if (dataContainsIsbn.Equals(false))
            {
                googleBookTask = googleBookApi.CollectDataForBook(data);
                amazonTask     = amazonWebScraper.CollectDataForBook(driver, data);
                var isbn = GetIsbn(googleBookModel);
                goodreadsTask = goodreadsApi.SearchByIsbn(isbn);
            }
            else
            {
                googleBookTask = googleBookApi.CollectDataForBook(data);
                amazonTask     = amazonWebScraper.CollectDataForBook(driver, data);
                goodreadsTask  = goodreadsApi.SearchByIsbn(data);
            }

            Task.WhenAll(amazonTask, googleBookTask, goodreadsTask);

            googleBookModel = googleBookTask.Result;

            //Check if model has a valid thumbnail url
            if (googleBookModel.ThumbnailUrl.Count() > 2)
            {
                DominantColorWebScraper dominantColorWebScraper = new DominantColorWebScraper();
                var dominantColour = dominantColorWebScraper.GetDominantColor(driver, googleBookModel.ThumbnailUrl);
                dominantColorString = dominantColour;
            }

            var            book           = goodreadsTask.Result;
            GoodreadsModel goodreadsModel = null;

            if (book != null)
            {
                goodreadsModel = goodreadsApi.CollectDataForBook(book);
            }

            amazonBookData = amazonTask.Result;
            SetDescription(goodreadsModel, googleBookModel);

            SetBookTitle(goodreadsModel, googleBookModel);
            SetAuthorsOfBook(goodreadsModel, googleBookModel);

            SetAverageRatings(goodreadsModel, googleBookModel, amazonBookData);
            SetPageCount(goodreadsModel, googleBookModel);
            SetAmazonRatings(amazonBookData);
            SetAmazonReviews(amazonBookData);
            SetReviewCount(amazonBookData);
            SetGenres(googleBookModel);
            SetSubtitle(googleBookModel);
            SetIsbn(goodreadsModel, googleBookModel, data);
            SetThumbnailUrl(googleBookModel);
            SetDominantColor(dominantColorString);
        }