init
This commit is contained in:
29
src/lib/server/crawler/clevertronik/data/stockLevel.ts
Normal file
29
src/lib/server/crawler/clevertronik/data/stockLevel.ts
Normal file
@@ -0,0 +1,29 @@
|
||||
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,
|
||||
}),
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user