🐛 FIX: Changement de logique pour rightPrice
This commit is contained in:
@ -1,4 +1,9 @@
|
||||
const { randomNumber } = require('./randomNumber');
|
||||
const { randomNumber } = require('./randomNumber');
|
||||
const errorHandling = require('../../utils/errorHandling');
|
||||
const { serverError } = require('../../config/errors');
|
||||
const { SCRAPER_API_KEY } = require('../../config/config');
|
||||
const axios = require('axios');
|
||||
const { JSDOM } = require("jsdom");
|
||||
|
||||
const subjectList = [
|
||||
"smartphone",
|
||||
@ -17,35 +22,36 @@ function getRandomArrayElement(array) {
|
||||
}
|
||||
|
||||
async function getAmazonProductList(subject) {
|
||||
const url = `https://www.amazon.fr/s?k=${subject}`;
|
||||
const Nightmare = require('nightmare')();
|
||||
return await Nightmare.goto(url)
|
||||
.wait('.s-result-item')
|
||||
.evaluate(() => {
|
||||
const amazonProductList = document.querySelectorAll('.s-result-item');
|
||||
const productsList = [];
|
||||
for (let indexProduct in amazonProductList) {
|
||||
try {
|
||||
const elementProduct = amazonProductList[indexProduct];
|
||||
const productImage = elementProduct.querySelector('.s-image');
|
||||
const originalPrice = elementProduct.querySelector(".a-price-whole").innerHTML;
|
||||
productsList.push({
|
||||
name: productImage["alt"],
|
||||
image: productImage["src"],
|
||||
price: Number(originalPrice.replace(",", ".").replace(" ", ""))
|
||||
});
|
||||
} catch (_error) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return productsList;
|
||||
})
|
||||
.end();
|
||||
const url = `https://www.amazon.fr/s?k=${subject}`;
|
||||
const { data } = await axios.get(`http://api.scraperapi.com/?api_key=${SCRAPER_API_KEY}&url=${url}`);
|
||||
const { document } = (new JSDOM(data)).window;
|
||||
const amazonProductList = document.querySelectorAll('.s-result-item');
|
||||
const productsList = [];
|
||||
for (let indexProduct in amazonProductList) {
|
||||
try {
|
||||
const elementProduct = amazonProductList[indexProduct];
|
||||
const productImage = elementProduct.querySelector('.s-image');
|
||||
const originalPrice = elementProduct.querySelector(".a-price-whole").innerHTML;
|
||||
productsList.push({
|
||||
name: productImage["alt"],
|
||||
image: productImage["src"],
|
||||
price: Number(originalPrice.replace(",", ".").replace(" ", ""))
|
||||
});
|
||||
} catch (_error) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
return productsList;
|
||||
}
|
||||
|
||||
module.exports = rightPriceOutput = async ({ res }, _argsObject) => {
|
||||
const subject = getRandomArrayElement(subjectList);
|
||||
const productsList = await getAmazonProductList(subject);
|
||||
const randomProduct = getRandomArrayElement(productsList);
|
||||
return res.status(200).json({ subject, ...randomProduct });
|
||||
module.exports = rightPriceOutput = async ({ res, next }, _argsObject) => {
|
||||
const subject = getRandomArrayElement(subjectList);
|
||||
try {
|
||||
const productsList = await getAmazonProductList(subject);
|
||||
const randomProduct = getRandomArrayElement(productsList);
|
||||
return res.status(200).json({ subject, ...randomProduct });
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return errorHandling(next, serverError);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user