51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
const { randomNumber } = require('./randomNumber');
|
|
|
|
const subjectList = [
|
|
"smartphone",
|
|
"pc+gamer",
|
|
"pc+portable",
|
|
"TV",
|
|
"casque",
|
|
"clavier",
|
|
"souris",
|
|
"ecran",
|
|
"jeux+vidéos"
|
|
];
|
|
|
|
function getRandomArrayElement(array) {
|
|
return array[randomNumber(0, array.length - 1)];
|
|
}
|
|
|
|
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();
|
|
}
|
|
|
|
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 });
|
|
} |