2023-05-29 00:08:32 +02:00
|
|
|
const axios = require("axios");
|
2023-06-03 15:09:29 +02:00
|
|
|
const utils = require("./utils");
|
2023-05-29 00:08:32 +02:00
|
|
|
const HTMLParser = require("node-html-parser");
|
|
|
|
|
2023-06-06 21:13:16 +02:00
|
|
|
const units = {
|
|
|
|
mbe: { unit: "wg", factor: 1 },
|
|
|
|
};
|
2023-06-03 15:09:29 +02:00
|
|
|
|
2023-05-29 00:08:32 +02:00
|
|
|
exports.getCanonical = function (item, today) {
|
2023-06-03 15:09:29 +02:00
|
|
|
let [quantity, unit] = utils.parseUnitAndQuantityAtEnd(item.unit.replace("/ EINWEG", "").replace("/ MEHRWEG", ""));
|
|
|
|
return utils.convertUnit(
|
|
|
|
{
|
|
|
|
id: item.id,
|
|
|
|
name: item.name,
|
|
|
|
price: item.price,
|
|
|
|
priceHistory: [{ date: today, price: item.price }],
|
|
|
|
quantity,
|
|
|
|
unit,
|
|
|
|
bio: item.name.toLowerCase().includes("bio"),
|
|
|
|
url: item.canonicalUrl,
|
|
|
|
},
|
|
|
|
units,
|
2023-06-06 21:13:16 +02:00
|
|
|
"unimarkt",
|
|
|
|
{
|
|
|
|
unit: "stk",
|
|
|
|
quantity: 1,
|
|
|
|
}
|
2023-06-03 15:09:29 +02:00
|
|
|
);
|
2023-05-29 00:08:32 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
exports.fetchData = async function () {
|
2023-06-02 16:45:54 +02:00
|
|
|
const UNIMARKT_BASE_URL = `https://shop.unimarkt.at/`;
|
|
|
|
const UNIMARKT_MAIN_CATEGORIES = [
|
|
|
|
"obst-gemuese",
|
|
|
|
"kuehlprodukte",
|
|
|
|
"fleisch-wurst",
|
|
|
|
"brot-gebaeck",
|
|
|
|
"getraenke",
|
|
|
|
"lebensmittel",
|
|
|
|
"suesses-snacks",
|
2023-06-06 21:13:16 +02:00
|
|
|
"haushalt",
|
2023-06-02 16:45:54 +02:00
|
|
|
];
|
2023-05-29 00:08:32 +02:00
|
|
|
|
2023-06-02 16:45:54 +02:00
|
|
|
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;
|
|
|
|
},
|
|
|
|
});
|
2023-05-29 00:08:32 +02:00
|
|
|
|
2023-06-02 16:45:54 +02:00
|
|
|
if (res && res.data) {
|
|
|
|
var root = HTMLParser.parse(res.data);
|
2023-05-29 00:08:32 +02:00
|
|
|
|
2023-06-02 16:45:54 +02:00
|
|
|
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"],
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
2023-05-29 00:08:32 +02:00
|
|
|
}
|
2023-06-02 16:45:54 +02:00
|
|
|
return unimarktItems;
|
2023-05-29 00:08:32 +02:00
|
|
|
};
|
2023-06-02 10:38:14 +02:00
|
|
|
|
2023-06-03 15:09:29 +02:00
|
|
|
exports.urlBase = "https://shop.unimarkt.at";
|