Files
phoenix/src/lib/server/crawler/clevertronik/data/stockLevel.ts
Tobias Klemp e7bd070b3e init
2025-11-02 20:40:27 +01:00

30 lines
900 B
TypeScript

import { Effect } from 'effect'
import type { Page } from 'puppeteer'
import { CrawlerElementNotFoundError } from '../..'
const STOCK_LEVEL_BADGE_SELECTOR =
'.modellfilter_row > .modellfilter_head > .colored_label_wrapper'
export const getStockLevel = (page: Page) =>
Effect.gen(function* () {
return yield* Effect.tryPromise({
try: () =>
page.evaluate((STOCK_LEVEL_BADGE_SELECTOR) => {
const stockLevelBadge: HTMLDivElement | null = document.querySelector(
STOCK_LEVEL_BADGE_SELECTOR,
)
if (!stockLevelBadge) {
throw new Error('Could not find stock level')
}
return stockLevelBadge.innerText
}, STOCK_LEVEL_BADGE_SELECTOR),
catch: (cause) =>
new CrawlerElementNotFoundError({
message: `Could not parse stock level, ${cause}`,
cause,
}),
})
})