mirror of
https://github.com/badlogic/heissepreise.git
synced 2024-07-01 21:05:49 +02:00
7012e246fd
should dedect about 99% of unimarkt bio products
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
const axios = require("axios");
|
|
const HTMLParser = require("node-html-parser");
|
|
|
|
exports.getCanonical = function (item, today) {
|
|
return {
|
|
id: item.id,
|
|
name: item.name,
|
|
price: item.price,
|
|
priceHistory: [{ date: today, price: item.price }],
|
|
unit: item.unit,
|
|
bio: item.name.toLowerCase().includes('bio'),
|
|
url: `https://shop.unimarkt.at${item.canonicalUrl}`,
|
|
};
|
|
};
|
|
|
|
exports.fetchData = async function () {
|
|
const UNIMARKT_BASE_URL = `https://shop.unimarkt.at/`;
|
|
const UNIMARKT_MAIN_CATEGORIES = [
|
|
"obst-gemuese",
|
|
"kuehlprodukte",
|
|
"fleisch-wurst",
|
|
"brot-gebaeck",
|
|
"getraenke",
|
|
"lebensmittel",
|
|
"suesses-snacks",
|
|
];
|
|
|
|
let unimarktItems = [];
|
|
for (let category of UNIMARKT_MAIN_CATEGORIES) {
|
|
var res = await axios.get(UNIMARKT_BASE_URL + category, {
|
|
validateStatus: function (status) {
|
|
return (status >= 200 && status < 300);
|
|
},
|
|
});
|
|
|
|
if (res && res.data) {
|
|
var root = HTMLParser.parse(res.data);
|
|
|
|
root
|
|
.querySelectorAll(".articleListItem .produktContainer")
|
|
.forEach((product) => {
|
|
unimarktItems.push({
|
|
id: product._attrs["data-articleid"],
|
|
name: product.querySelector(".name").text,
|
|
price: parseFloat(product._attrs["data-price"]),
|
|
unit: product.querySelector(".grammatur").text,
|
|
canonicalUrl: product.querySelector(".image > a")._attrs["href"],
|
|
});
|
|
});
|
|
}
|
|
}
|
|
return unimarktItems;
|
|
};
|