carrefour: solo intentar parsear jsonld en error

This commit is contained in:
Cat /dev/Nulo 2024-01-01 16:49:43 -03:00
parent eb271fb496
commit 518a7cb2f5

View file

@ -1,6 +1,6 @@
import { parseHTML } from "linkedom"; import { parseHTML } from "linkedom";
import { Precioish, type Precio } from "../scrap.js"; import { Precioish, type Precio } from "../scrap.js";
import { getProductJsonLd, priceFromMeta } from "../common.js"; import { getProductJsonLd, priceFromMeta, stockFromMeta } from "../common.js";
function getEanByTable(dom: Window): string { function getEanByTable(dom: Window): string {
const eanLabelEl = dom.window.document.querySelector( const eanLabelEl = dom.window.document.querySelector(
@ -54,14 +54,22 @@ export function getCarrefourProduct(html: string | Buffer): Precioish {
const dom = parseHTML(html); const dom = parseHTML(html);
const precioCentavos = priceFromMeta(dom); const precioCentavos = priceFromMeta(dom);
const inStock = stockFromMeta(dom);
const ean = eanFromSeedState(dom); const ean = eanFromSeedState(dom);
let name, imageUrl;
try {
const ld = getProductJsonLd(dom); const ld = getProductJsonLd(dom);
const name = ld.name; name = ld.name;
const imageUrl = ld.image; imageUrl = ld.image;
const inStock = } catch (error) {
ld.offers.offers[0].availability === "http://schema.org/InStock"; if (inStock) {
throw error;
} else {
// algunas paginas sin stock no tienen json ld
}
}
return { return {
name, name,