From c4b49814fb90051b8f15dd7587b7aa1753c98ae1 Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 00:21:21 -0300 Subject: [PATCH 01/56] RIP WARC --- bun.lockb | Bin 223272 -> 114496 bytes readme.md | 16 +- scraper/Containerfile | 15 - scraper/auto.ts | 128 +--- scraper/cli.ts | 12 +- scraper/package.json | 2 +- scraper/scrap.ts | 84 +-- scraper/warc.ts | 157 ----- warcificator/Cargo.lock | 1373 -------------------------------------- warcificator/Cargo.toml | 17 - warcificator/src/main.rs | 199 ------ 11 files changed, 53 insertions(+), 1950 deletions(-) delete mode 100644 scraper/warc.ts delete mode 100644 warcificator/Cargo.lock delete mode 100644 warcificator/Cargo.toml delete mode 100644 warcificator/src/main.rs diff --git a/bun.lockb b/bun.lockb index 280e6488b71cadd6d6bb643b3b05bbfac0a2651a..84273621e28f57e338cdfa65c8a7c95fda1945d8 100755 GIT binary patch delta 23530 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 literal 223272 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 /etc/periodic/daily/scraper \ && chmod +x /etc/periodic/daily/scraper COPY --from=builder /tmp/cli.build.js /bin/scraper -COPY --from=warcificator-builder /usr/local/cargo/bin/warcificator /bin/ COPY --from=builder /usr/src/app/db-datos/drizzle /bin/drizzle COPY --from=builder /usr/src/app/data /listas WORKDIR /app diff --git a/scraper/auto.ts b/scraper/auto.ts index 582cfd1..b4bd8d5 100644 --- a/scraper/auto.ts +++ b/scraper/auto.ts @@ -1,14 +1,10 @@ -import { mkdtemp, access, writeFile } from "node:fs/promises"; +import { mkdtemp, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { join, resolve } from "node:path"; -import { spawn } from "node:child_process"; +import { join } from "node:path"; import { Supermercado, hosts } from "db-datos/supermercado.js"; import PQueue from "p-queue"; -import { format, formatDuration, intervalToDuration } from "date-fns"; -import { parseWarc } from "./scrap.js"; -import { S3Client } from "@aws-sdk/client-s3"; -import { Upload } from "@aws-sdk/lib-storage"; -import { BunFile } from "bun"; +import { formatDuration, intervalToDuration } from "date-fns"; +import { downloadList } from "./scrap.js"; import { db } from "db-datos/db.js"; import { like } from "drizzle-orm"; import { productoUrls } from "db-datos/schema.js"; @@ -23,7 +19,7 @@ const supermercados: Supermercado[] = [ ]; // hacemos una cola para el scrapeo para no tener varios writers a la BD y no sobrecargar la CPU -const scrapQueue = new PQueue({ concurrency: 1 }); +const scrapQueue = new PQueue({ concurrency: 4 }); export async function auto() { const a = new Auto(); @@ -31,35 +27,9 @@ export async function auto() { } class Auto { - s3Config?: { s3: S3Client; bucketName: string }; telegramConfig?: { token: string; chatId: string }; constructor() { - if ( - !process.env.S3_ACCESS_KEY_ID || - !process.env.S3_SECRET_ACCESS_KEY || - !process.env.S3_BUCKET_NAME - ) { - if (process.env.NODE_ENV === "development") { - console.warn("faltan creds de s3, no voy a subir a s3"); - } else { - throw new Error("faltan creds de s3"); - } - } else { - this.s3Config = { - // https://www.backblaze.com/docs/cloud-storage-use-the-aws-sdk-for-javascript-v3-with-backblaze-b2 - s3: new S3Client({ - endpoint: "https://s3.us-west-004.backblazeb2.com", - region: "us-west-004", - credentials: { - accessKeyId: process.env.S3_ACCESS_KEY_ID, - secretAccessKey: process.env.S3_SECRET_ACCESS_KEY, - }, - }), - bucketName: process.env.S3_BUCKET_NAME, - }; - } - if (!process.env.TELEGRAM_BOT_TOKEN) console.warn("no hay TELEGRAM_BOT_TOKEN, no voy a loggear por allá"); else if (!process.env.TELEGRAM_BOT_CHAT_ID) @@ -107,93 +77,29 @@ class Auto { const urls = results.map((r) => r.url); await writeFile(listPath, urls.join("\n") + "\n"); - const date = new Date(); - const zstdWarcName = `${supermercado}-${format( - date, - "yyyy-MM-dd-HH:mm" - )}.warc.zst`; - const zstdWarcPath = join(ctxPath, zstdWarcName); - const subproc = Bun.spawn({ - cmd: ["warcificator", listPath, zstdWarcPath], - stderr: "ignore", - stdout: "ignore", - cwd: ctxPath, - }); - const t0 = performance.now(); - await subproc.exited; - this.inform( - `[downloader] ${zstdWarcName} tardó ${formatMs(performance.now() - t0)}` - ); - - if (!(await fileExists(zstdWarcPath))) { - const err = this.report(`no encontré el ${zstdWarcPath}`); - throw err; - } - - this.scrapAndInform({ zstdWarcPath, zstdWarcName }); - - try { - await this.uploadToBucket({ - fileName: zstdWarcName, - file: Bun.file(zstdWarcPath), - }); - } catch (error) { - this.inform(`Falló subir ${zstdWarcName} a S3; ${error}`); - console.error(error); - } - + this.scrapAndInform({ listPath }); // TODO: borrar archivos temporales } - async scrapAndInform({ - zstdWarcPath, - zstdWarcName, - }: { - zstdWarcPath: string; - zstdWarcName: string; - }) { + async scrapAndInform({ listPath }: { listPath: string }) { const res = await scrapQueue.add(async () => { const t0 = performance.now(); - const progress = await parseWarc(zstdWarcPath); + const progress = await downloadList(listPath); return { took: performance.now() - t0, progress }; }); if (res) { const { took, progress } = res; this.inform( - `Procesado ${zstdWarcName} (${progress.done} ok, ${ - progress.errors.length - } errores) (tardó ${formatMs(took)})` + `Procesado ${listPath} (${progress.done} ok, ${ + progress.skipped + } skipped, ${progress.errors.length} errores) (tardó ${formatMs(took)})` ); } else { - this.inform(`Algo falló en ${zstdWarcName}`); + this.inform(`Algo falló en ${listPath}`); } } - async uploadToBucket({ - fileName, - file, - }: { - fileName: string; - file: BunFile; - }) { - if (!this.s3Config) { - this.inform( - `[s3] Se intentó subir ${fileName} pero no tenemos creds de S3` - ); - return; - } - const parallelUploads3 = new Upload({ - client: this.s3Config.s3, - params: { - Bucket: this.s3Config.bucketName, - Key: fileName, - Body: file, - }, - }); - await parallelUploads3.done(); - } - inform(msg: string) { this.sendTelegramMsg(msg); console.info(msg); @@ -216,16 +122,6 @@ class Auto { } } -// no se llama exists porque bun tiene un bug en el que usa fs.exists por mas que exista una funcion llamada exists -async function fileExists(path: string) { - try { - access(path); - return true; - } catch { - return false; - } -} - function formatMs(ms: number) { return formatDuration(intervalToDuration({ start: 0, end: Math.round(ms) })); } diff --git a/scraper/cli.ts b/scraper/cli.ts index 9507090..3e8af80 100644 --- a/scraper/cli.ts +++ b/scraper/cli.ts @@ -2,7 +2,7 @@ import { scrapCarrefourProducts } from "../carrefour-link-scraper/index.js"; import { scrapCotoProducts } from "../coto-link-scraper/index.js"; import { scrapDiaProducts } from "../dia-link-scraper/index.js"; import { auto } from "./auto.js"; -import { parseWarc } from "./scrap.js"; +import { downloadList } from "./scrap.js"; if (process.argv[2] === "auto") { await auto(); @@ -13,16 +13,16 @@ if (process.argv[2] === "auto") { } else if (process.argv[2] === "scrap-coto-links") { await scrapCotoProducts(); } else if (process.argv[2] === "scrap") { - const warcPaths = process.argv.slice(3); - if (warcPaths.length > 0) { - for (const path of warcPaths) { - const res = await parseWarc(path); + const urlLists = process.argv.slice(3); + if (urlLists.length > 0) { + for (const path of urlLists) { + const res = await downloadList(path); console.info("======================================="); console.info(path, res); console.info("======================================="); } } else { - console.error("Especificá WARCs para scrapear."); + console.error("Especificá listas de urls para scrapear."); process.exit(1); } } else { diff --git a/scraper/package.json b/scraper/package.json index 1ca6dd7..edaf0ca 100644 --- a/scraper/package.json +++ b/scraper/package.json @@ -19,8 +19,8 @@ "drizzle-orm": "=0.29.1", "linkedom": "^0.16.5", "nanoid": "^5.0.4", + "p-map": "^7.0.1", "p-queue": "^8.0.1", - "warcio": "^2.2.1", "zod": "^3.22.4" }, "devDependencies": { diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 0698ffe..07a473f 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -1,68 +1,52 @@ import * as schema from "db-datos/schema.js"; -import { WARCParser } from "warcio"; import { writeFile } from "fs/promises"; import { createHash } from "crypto"; import { getCarrefourProduct } from "./parsers/carrefour.js"; import { getDiaProduct } from "./parsers/dia.js"; import { getCotoProduct } from "./parsers/coto.js"; import { join } from "path"; -import { and, eq, sql } from "drizzle-orm"; import { db } from "db-datos/db.js"; +import pMap from "p-map"; const DEBUG = false; const PARSER_VERSION = 4; -const getPrevPrecio = db - .select({ id: schema.precios.id }) - .from(schema.precios) - .where( - and( - eq(schema.precios.warcRecordId, sql.placeholder("warcRecordId")), - eq(schema.precios.parserVersion, PARSER_VERSION) - ) - ) - .limit(1) - .prepare(); - export type Precio = typeof schema.precios.$inferInsert; export type Precioish = Omit< Precio, "fetchedAt" | "url" | "id" | "warcRecordId" | "parserVersion" >; -export async function parseWarc(path: string) { - // const warc = createReadStream(path); +export async function downloadList(path: string) { let progress: { done: number; - errors: { error: any; warcRecordId: string; path: string }[]; - } = { done: 0, errors: [] }; + skipped: number; + errors: { error: any; url: string; path: string }[]; + } = { done: 0, skipped: 0, errors: [] }; - const proc = Bun.spawn(["zstdcat", "-d", path], {}); - const warc = proc.stdout; - // TODO: tirar error si falla zstd + let list = (await Bun.file(path).text()) + .split("\n") + .filter((s) => s.length > 0); - const parser = new WARCParser(warc); - for await (const record of parser) { - if (record.warcType === "response") { - if (!record.warcTargetURI) continue; - const warcRecordId = record.warcHeader("WARC-Record-ID"); - if (!warcRecordId) throw new Error("No tiene WARC-Record-ID"); - - if (getPrevPrecio.get({ warcRecordId })) { - console.debug(`skipped ${warcRecordId}`); - continue; + await pMap( + list, + async (urlS) => { + let url; + try { + url = new URL(urlS); + } catch (err) { + console.error("error parseando", urlS); + return; } - if (record.httpHeaders?.statusCode !== 200) { - console.debug( - `skipped ${warcRecordId} because status=${record.httpHeaders?.statusCode} (!=200)` - ); - continue; + const res = await fetch(url); + if (!res.ok) { + console.debug(`skipped ${urlS} because status=${res.status} (!=200)`); + progress.skipped++; + return; } - // TODO: sobreescribir si existe el mismo record-id pero con version mas bajo? - const html = await record.contentText(); + const html = await res.text(); - const url = new URL(record.warcTargetURI); try { let ish: Precioish | undefined = undefined; if (url.hostname === "www.carrefour.com.ar") @@ -75,9 +59,8 @@ export async function parseWarc(path: string) { const p: Precio = { ...ish, - fetchedAt: new Date(record.warcDate!), - url: record.warcTargetURI, - warcRecordId, + fetchedAt: new Date(), + url: urlS, parserVersion: PARSER_VERSION, }; @@ -85,28 +68,23 @@ export async function parseWarc(path: string) { progress.done++; } catch (error) { - console.error({ path, warcRecordId, error }); + console.error({ path, urlS, error }); progress.errors.push({ path, - warcRecordId, + url: urlS, error, }); if (DEBUG) { - const urlHash = createHash("md5") - .update(record.warcTargetURI!) - .digest("hex"); + const urlHash = createHash("md5").update(urlS).digest("hex"); const output = join("debug", `${urlHash}.html`); await writeFile(output, html); console.error(`wrote html to ${output}`); } } - } - } - - if ((await proc.exited) !== 0) { - throw new Error("zstd tiró un error"); - } + }, + { concurrency: 32 } + ); return progress; } diff --git a/scraper/warc.ts b/scraper/warc.ts deleted file mode 100644 index 4e719c6..0000000 --- a/scraper/warc.ts +++ /dev/null @@ -1,157 +0,0 @@ -const crlf = "\r\n"; -const crlfB = Buffer.from(crlf, "utf-8"); -const crlfcrlf = crlf + crlf; -const crlfcrlfB = Buffer.from(crlfcrlf, "utf-8"); -const warc10B = Buffer.from("WARC/1.0", "utf-8"); -const emptyBuffer = Buffer.from("", "utf-8"); - -export async function* parseWARC(path: string) { - const warc = Bun.spawn(["zstd", "-do", "/dev/stdout", path], { - stderr: "ignore", - }).stdout; - - // const warc = Bun.stdin.stream(1024 * 1024 * 128); - - // let buffer: Uint8Array[] = []; - // const transform = new TransformStream({ - // transform(chunk, controller) { - // buffer.push(chunk); - // if ( - // buffer.reduce((prev, curr) => prev + curr.length, 0) > - // 1024 * 1024 * 64 - // ) { - // controller.enqueue(Buffer.concat(buffer)); - // buffer = []; - // } - // }, - // flush(controller) { - // controller.enqueue(Buffer.concat(buffer)); - // }, - // }); - - // warc.pipeTo(transform.writable); - - const reader = warc.getReader(); - // const reader = transform.readable.getReader(); - - // const warc = process.stdin; - - let arrays: Buffer[] = []; - let done = false; - while (!done) { - const r = await reader.readMany(); - if (r.done) { - done = true; - } else { - arrays = arrays.concat(r.value.map((x) => Buffer.from(x))); - if ( - arrays.reduce((prev, curr) => prev + curr.length, 0) < - 1024 * 1024 * 10 - ) - continue; - } - let buf: Buffer; - while ( - ((buf = arrays.length === 1 ? arrays[0] : Buffer.concat(arrays)), - buf.subarray(warc10B.length).includes(warc10B)) - ) { - const until = buf.indexOf(crlfcrlfB); - const header = buf.subarray(0, until); - - const lines = splitBuffer(header, crlfB); - let i = 0; - const nextLine = () => { - const line = lines[i]; - i++; - return line ? line : emptyBuffer; - }; - let line: Buffer; - if (!(line = nextLine()).equals(warc10B)) { - throw new Error(`No WARC 1.0 header in '${line}'`); - } - - let field; - let fields = new Map(); - while ( - ((line = nextLine()), - (field = parseField(line.toString("utf8"))), - line.length !== 0) - ) { - fields.set(field[0], field[1]); - } - const length = parseInt(fields.get("Content-Length")!); - - const rawHttp = buf.subarray( - until + crlfcrlfB.length, - until + crlfcrlfB.length + length - ); - const rawHttpHeaders = rawHttp - .subarray( - rawHttp.indexOf(crlfB) + crlfB.length, - rawHttp.indexOf(crlfcrlfB) + crlfcrlfB.length - ) - .toString(); - - let httpHeaders = new Map(); - rawHttpHeaders.split(crlf).forEach((line) => { - if (!line.length) return; - const [key, val] = line.split(": "); - httpHeaders.set(key, val); - }); - - let content = rawHttp.subarray( - rawHttp.indexOf(crlfcrlfB) + crlfcrlfB.length - ); - - if (httpHeaders.get("Transfer-Encoding") === "chunked") { - content = dechunk(content); - } - - // console.debug(fields.get("WARC-Date"), content.length); - - yield { - fields, - content, - }; - - arrays = [ - buf.subarray(until + crlfcrlfB.length + length + crlfcrlfB.length), - ]; - if (!arrays[0].length) break; - } - } -} - -function splitBuffer(buffer: Buffer, val: Buffer): Buffer[] { - let bufs = []; - let rest = buffer; - let i; - while (((i = rest.indexOf(val)), i !== -1)) { - bufs.push(rest.subarray(0, i)); - rest = rest.subarray(i + val.length); - } - bufs.push(rest); - return bufs; -} - -function parseField(line: string): [string, string] { - const [key, val] = line.split(": "); - return [key, val]; -} - -function dechunk(content: Buffer): Buffer { - let actualContent = []; - - while (true) { - let until = content.indexOf(crlf); - const hexLen = content.subarray(0, until).toString(); - if (hexLen.length === 0) break; - const len = parseInt(hexLen, 16); - actualContent.push( - content.subarray(until + crlfB.length, until + crlfB.length + len) - ); - content = content.subarray(until + crlfB.length + len + crlfB.length); - } - - return Buffer.concat(actualContent); -} diff --git a/warcificator/Cargo.lock b/warcificator/Cargo.lock deleted file mode 100644 index 4aaf9e8..0000000 --- a/warcificator/Cargo.lock +++ /dev/null @@ -1,1373 +0,0 @@ -# This file is automatically @generated by Cargo. -# It is not intended for manual editing. -version = 3 - -[[package]] -name = "addr2line" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" - -[[package]] -name = "adler32" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" - -[[package]] -name = "alloc-no-stdlib" -version = "2.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" - -[[package]] -name = "alloc-stdlib" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" -dependencies = [ - "alloc-no-stdlib", -] - -[[package]] -name = "android-tzdata" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" - -[[package]] -name = "android_system_properties" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" -dependencies = [ - "libc", -] - -[[package]] -name = "arrayvec" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" - -[[package]] -name = "async-channel" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ca33f4bc4ed1babef42cad36cc1f51fa88be00420404e5b1e80ab1b18f7678c" -dependencies = [ - "concurrent-queue", - "event-listener", - "event-listener-strategy", - "futures-core", - "pin-project-lite", -] - -[[package]] -name = "async-compression" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" -dependencies = [ - "brotli", - "flate2", - "futures-core", - "memchr", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "autocfg" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" - -[[package]] -name = "backtrace" -version = "0.3.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" -dependencies = [ - "addr2line", - "cc", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "brotli" -version = "3.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", - "brotli-decompressor", -] - -[[package]] -name = "brotli-decompressor" -version = "2.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" -dependencies = [ - "alloc-no-stdlib", - "alloc-stdlib", -] - -[[package]] -name = "bumpalo" -version = "3.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "bytes" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" - -[[package]] -name = "cc" -version = "1.0.83" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] - -[[package]] -name = "cfg-if" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" - -[[package]] -name = "chrono" -version = "0.4.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" -dependencies = [ - "android-tzdata", - "iana-time-zone", - "js-sys", - "num-traits", - "wasm-bindgen", - "windows-targets 0.48.5", -] - -[[package]] -name = "concurrent-queue" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16048cd947b08fa32c24458a22f5dc5e835264f689f4f5653210c69fd107363" -dependencies = [ - "crossbeam-utils", -] - -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "core-foundation-sys" -version = "0.8.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" - -[[package]] -name = "crc32fast" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "encoding_rs" -version = "0.8.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" -dependencies = [ - "cfg-if", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "event-listener" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f2cdcf274580f2d63697192d744727b3198894b1bf02923643bf59e2c26712" -dependencies = [ - "concurrent-queue", - "parking", - "pin-project-lite", -] - -[[package]] -name = "event-listener-strategy" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" -dependencies = [ - "event-listener", - "pin-project-lite", -] - -[[package]] -name = "flate2" -version = "1.0.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" -dependencies = [ - "crc32fast", - "miniz_oxide", -] - -[[package]] -name = "fnv" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" - -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "futures-channel" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" -dependencies = [ - "futures-core", -] - -[[package]] -name = "futures-core" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" - -[[package]] -name = "futures-sink" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" - -[[package]] -name = "futures-task" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" - -[[package]] -name = "futures-util" -version = "0.3.30" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" -dependencies = [ - "futures-core", - "futures-task", - "pin-project-lite", - "pin-utils", -] - -[[package]] -name = "getrandom" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" -dependencies = [ - "cfg-if", - "libc", - "wasi", -] - -[[package]] -name = "gimli" -version = "0.28.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" - -[[package]] -name = "h2" -version = "0.3.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" -dependencies = [ - "bytes", - "fnv", - "futures-core", - "futures-sink", - "futures-util", - "http", - "indexmap", - "slab", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "hashbrown" -version = "0.14.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - -[[package]] -name = "hermit-abi" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" - -[[package]] -name = "http" -version = "0.2.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" -dependencies = [ - "bytes", - "http", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - -[[package]] -name = "hyper" -version = "0.14.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", - "want", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" -dependencies = [ - "futures-util", - "http", - "hyper", - "rustls", - "tokio", - "tokio-rustls", -] - -[[package]] -name = "iana-time-zone" -version = "0.1.59" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" -dependencies = [ - "android_system_properties", - "core-foundation-sys", - "iana-time-zone-haiku", - "js-sys", - "wasm-bindgen", - "windows-core", -] - -[[package]] -name = "iana-time-zone-haiku" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" -dependencies = [ - "cc", -] - -[[package]] -name = "idna" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" -dependencies = [ - "equivalent", - "hashbrown", -] - -[[package]] -name = "ipnet" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" - -[[package]] -name = "itoa" -version = "1.0.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" - -[[package]] -name = "js-sys" -version = "0.3.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" -dependencies = [ - "wasm-bindgen", -] - -[[package]] -name = "lexical-core" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" -dependencies = [ - "arrayvec", - "bitflags", - "cfg-if", - "ryu", - "static_assertions", -] - -[[package]] -name = "libc" -version = "0.2.151" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" - -[[package]] -name = "libflate" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" -dependencies = [ - "adler32", - "crc32fast", - "libflate_lz77", -] - -[[package]] -name = "libflate_lz77" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a52d3a8bfc85f250440e4424db7d857e241a3aebbbe301f3eb606ab15c39acbf" -dependencies = [ - "rle-decode-fast", -] - -[[package]] -name = "lock_api" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" -dependencies = [ - "autocfg", - "scopeguard", -] - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "memchr" -version = "2.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" - -[[package]] -name = "mime" -version = "0.3.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" - -[[package]] -name = "miniz_oxide" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" -dependencies = [ - "adler", -] - -[[package]] -name = "mio" -version = "0.8.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" -dependencies = [ - "libc", - "wasi", - "windows-sys", -] - -[[package]] -name = "nom" -version = "5.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" -dependencies = [ - "lexical-core", - "memchr", - "version_check", -] - -[[package]] -name = "num-traits" -version = "0.2.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" -dependencies = [ - "autocfg", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", -] - -[[package]] -name = "object" -version = "0.32.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" -dependencies = [ - "memchr", -] - -[[package]] -name = "once_cell" -version = "1.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" - -[[package]] -name = "parking" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" - -[[package]] -name = "parking_lot" -version = "0.12.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" -dependencies = [ - "lock_api", - "parking_lot_core", -] - -[[package]] -name = "parking_lot_core" -version = "0.9.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "smallvec", - "windows-targets 0.48.5", -] - -[[package]] -name = "percent-encoding" -version = "2.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" - -[[package]] -name = "pin-project-lite" -version = "0.2.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" - -[[package]] -name = "pin-utils" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" - -[[package]] -name = "proc-macro2" -version = "1.0.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75cb1540fadbd5b8fbccc4dddad2734eba435053f725621c070711a14bb5f4b8" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags", -] - -[[package]] -name = "reqwest" -version = "0.11.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b1ae8d9ac08420c66222fb9096fc5de435c3c48542bc5336c51892cffafb41" -dependencies = [ - "async-compression", - "base64", - "bytes", - "encoding_rs", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", - "hyper-rustls", - "ipnet", - "js-sys", - "log", - "mime", - "once_cell", - "percent-encoding", - "pin-project-lite", - "rustls", - "rustls-pemfile", - "serde", - "serde_json", - "serde_urlencoded", - "system-configuration", - "tokio", - "tokio-rustls", - "tokio-util", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", - "webpki-roots", - "winreg", -] - -[[package]] -name = "ring" -version = "0.17.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74" -dependencies = [ - "cc", - "getrandom", - "libc", - "spin", - "untrusted", - "windows-sys", -] - -[[package]] -name = "rle-decode-fast" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" - -[[package]] -name = "rustc-demangle" -version = "0.1.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" - -[[package]] -name = "rustls" -version = "0.21.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" -dependencies = [ - "log", - "ring", - "rustls-webpki", - "sct", -] - -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64", -] - -[[package]] -name = "rustls-webpki" -version = "0.101.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "ryu" -version = "1.0.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - -[[package]] -name = "sct" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "serde" -version = "1.0.193" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.193" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.108" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "signal-hook-registry" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8229b473baa5980ac72ef434c4415e70c4b5e71b423043adb4ba059f89c99a1" -dependencies = [ - "libc", -] - -[[package]] -name = "slab" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] - -[[package]] -name = "smallvec" -version = "1.11.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" - -[[package]] -name = "socket2" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" -dependencies = [ - "libc", - "windows-sys", -] - -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" - -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - -[[package]] -name = "syn" -version = "2.0.43" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "system-configuration" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" -dependencies = [ - "bitflags", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "tokio" -version = "1.35.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" -dependencies = [ - "backtrace", - "bytes", - "libc", - "mio", - "num_cpus", - "parking_lot", - "pin-project-lite", - "signal-hook-registry", - "socket2", - "tokio-macros", - "windows-sys", -] - -[[package]] -name = "tokio-macros" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "tokio-rustls" -version = "0.24.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" -dependencies = [ - "rustls", - "tokio", -] - -[[package]] -name = "tokio-util" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", - "tracing", -] - -[[package]] -name = "tower-service" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" - -[[package]] -name = "tracing" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.32" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - -[[package]] -name = "unicode-bidi" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" - -[[package]] -name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "untrusted" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" - -[[package]] -name = "url" -version = "2.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "uuid" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" -dependencies = [ - "getrandom", -] - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - -[[package]] -name = "warc" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e44585619c04f9a4bcfdfbbbefff9e7c4e277a693424162b30c88aaf3abd785e" -dependencies = [ - "chrono", - "libflate", - "nom", - "url", - "uuid", -] - -[[package]] -name = "warcificator" -version = "0.1.0" -dependencies = [ - "async-channel", - "http", - "reqwest", - "tokio", - "warc", -] - -[[package]] -name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" - -[[package]] -name = "wasm-bindgen" -version = "0.2.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" -dependencies = [ - "cfg-if", - "wasm-bindgen-macro", -] - -[[package]] -name = "wasm-bindgen-backend" -version = "0.2.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" -dependencies = [ - "bumpalo", - "log", - "once_cell", - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-futures" -version = "0.4.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" -dependencies = [ - "cfg-if", - "js-sys", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "wasm-bindgen-macro" -version = "0.2.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" -dependencies = [ - "quote", - "wasm-bindgen-macro-support", -] - -[[package]] -name = "wasm-bindgen-macro-support" -version = "0.2.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "wasm-bindgen-backend", - "wasm-bindgen-shared", -] - -[[package]] -name = "wasm-bindgen-shared" -version = "0.2.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" - -[[package]] -name = "web-sys" -version = "0.3.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - -[[package]] -name = "webpki-roots" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" - -[[package]] -name = "windows-core" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" -dependencies = [ - "windows-targets 0.52.0", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - -[[package]] -name = "windows-targets" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" -dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", -] - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - -[[package]] -name = "windows_i686_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - -[[package]] -name = "windows_i686_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" - -[[package]] -name = "winreg" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" -dependencies = [ - "cfg-if", - "windows-sys", -] diff --git a/warcificator/Cargo.toml b/warcificator/Cargo.toml deleted file mode 100644 index 723f0dc..0000000 --- a/warcificator/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "warcificator" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -async-channel = "2.1.1" -http = "0.2.11" -reqwest = { version = "0.11.23", default-features = false, features = [ - "rustls-tls", - "gzip", - "brotli", -] } -tokio = { version = "1.35.1", features = ["full"] } -warc = "0.3.1" diff --git a/warcificator/src/main.rs b/warcificator/src/main.rs deleted file mode 100644 index 8743907..0000000 --- a/warcificator/src/main.rs +++ /dev/null @@ -1,199 +0,0 @@ -use async_channel::{Receiver, Sender}; -use std::{ - env::args, - fs, - net::SocketAddr, - process::{Command, Stdio}, -}; -use tokio::io::{stderr, AsyncWriteExt}; -use warc::{RecordBuilder, WarcHeader, WarcWriter}; - -struct FullExchange { - socket_addr: Option, - request: http::Request<&'static str>, - response: http::Response>, -} - -#[tokio::main] -async fn main() { - let mut args = args().skip(1); - let links_list_path = args.next().unwrap(); - let output_zstd_path = args.next().unwrap(); - let links_str = fs::read_to_string(links_list_path).unwrap(); - let links = links_str - .split("\n") - .map(|s| s.trim()) - .filter(|s| s.len() > 0) - .map(|s| s.to_owned()) - .collect::>(); - - let handle = { - let (sender, receiver) = async_channel::bounded::(1); - let (res_sender, res_receiver) = async_channel::unbounded::(); - - let mut handles = Vec::new(); - for _ in 1..16 { - let rx = receiver.clone(); - let tx = res_sender.clone(); - handles.push(tokio::spawn(worker(rx, tx))); - } - - let warc_writer_handle = tokio::spawn(warc_writer(res_receiver, output_zstd_path)); - - for link in links { - sender.send_blocking(link).unwrap(); - } - sender.close(); - - for handle in handles { - handle.await.unwrap(); - } - - warc_writer_handle - }; - handle.await.unwrap(); -} - -async fn worker(rx: Receiver, tx: Sender) { - let client = reqwest::ClientBuilder::default().build().unwrap(); - while let Ok(url) = rx.recv().await { - let res = fetch(&client, url.clone()).await; - match res { - Ok(ex) => { - tx.send(ex).await.unwrap(); - } - Err(err) => { - stderr() - .write_all(format!("Failed to fetch {}: {:#?}", url.as_str(), err).as_bytes()) - .await - .unwrap(); - } - } - } -} - -async fn fetch(client: &reqwest::Client, url: String) -> Result { - let request = client.get(url).build().unwrap(); - let mut http_request_builder = http::Request::builder() - .method(request.method()) - .uri(request.url().as_str()); - for (key, val) in request.headers() { - http_request_builder = http_request_builder.header(key, val); - } - let response = client.execute(request).await?; - - let ip_address = response.remote_addr(); - - let http_request = { - http_request_builder - .version(response.version()) - .body("") - .unwrap() - }; - - let http_response = { - let mut http_response_builder = http::Response::<()>::builder() - .status(response.status()) - .version(response.version()); - for (key, val) in response.headers() { - http_response_builder = http_response_builder.header(key, val); - } - let body = response.bytes().await?; - http_response_builder.body(body.to_vec()).unwrap() - }; - - Ok(FullExchange { - socket_addr: ip_address, - request: http_request, - response: http_response, - }) -} - -async fn warc_writer(rx: Receiver, output_zstd_path: String) { - let zstd_proc = Command::new("zstd") - .args(&["-T0", "-15", "--long", "-o", &output_zstd_path]) - .stdin(Stdio::piped()) - .stderr(Stdio::null()) - .stdout(Stdio::null()) - .spawn() - .unwrap(); - - let mut writer = WarcWriter::new(zstd_proc.stdin.unwrap()); - writer - .write( - &RecordBuilder::default() - .version("1.0".to_owned()) - .warc_type(warc::RecordType::WarcInfo) - .header(WarcHeader::ContentType, "application/warc-fields") - .body(format!("software: preciazo-warcificator/0.0.0\nformat: WARC file version 1.0\nconformsTo: http://www.archive.org/documents/WarcFileFormat-1.0.html").into()) - .build() - .unwrap(), - ) - .unwrap(); - while let Ok(res) = rx.recv().await { - let uri = res.request.uri().to_string(); - let req_record = { - let mut builder = RecordBuilder::default() - .version("1.0".to_owned()) - .warc_type(warc::RecordType::Request) - .header(WarcHeader::TargetURI, uri.clone()) - .header(WarcHeader::ContentType, "application/http;msgtype=request") - .header( - WarcHeader::Unknown("X-Warcificator-Lying".to_string()), - "the request contains other headers not included here", - ); - if let Some(addr) = res.socket_addr { - builder = builder.header(WarcHeader::IPAddress, addr.ip().to_string()); - } - builder - .body(format_http11_request(res.request).into_bytes()) - .build() - .unwrap() - }; - writer.write(&req_record).unwrap(); - writer - .write(&{ - let mut builder = RecordBuilder::default() - .version("1.0".to_owned()) - .warc_type(warc::RecordType::Response) - .header(WarcHeader::TargetURI, uri) - .header(WarcHeader::ConcurrentTo, req_record.warc_id()) - .header(WarcHeader::ContentType, "application/http;msgtype=response"); - if let Some(addr) = res.socket_addr { - builder = builder.header(WarcHeader::IPAddress, addr.ip().to_string()); - } - builder - .body(format_http11_response(res.response)) - .build() - .unwrap() - }) - .unwrap(); - } -} - -fn format_http11_request(req: http::Request<&'static str>) -> String { - let start_line = format!("{} {} HTTP/1.1", req.method().as_str(), req.uri().path()); - let headers_str = req - .headers() - .iter() - .map(|(key, val)| format!("{}: {}\r\n", key, val.to_str().unwrap())) - .collect::(); - - [start_line.as_str(), headers_str.as_str(), req.body()].join("\r\n") -} - -fn format_http11_response(res: http::Response>) -> Vec { - let start_line = format!( - "HTTP/1.1 {} {}", - res.status().as_str(), - res.status().canonical_reason().unwrap_or("") - ); - let headers_str = res - .headers() - .iter() - .map(|(key, val)| format!("{}: {}\r\n", key, val.to_str().unwrap())) - .collect::(); - - let crlf: &[u8] = &[13, 10]; - [start_line.as_bytes(), headers_str.as_bytes(), res.body()].join(crlf) -} From 951ac32368b90491d81527d527c8d37af90d2b5b Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 00:23:30 -0300 Subject: [PATCH 02/56] chore --- .dockerignore | 3 ++- bun.lockb | Bin 114496 -> 196704 bytes 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 86597ab..7cbdc73 100644 --- a/.dockerignore +++ b/.dockerignore @@ -4,4 +4,5 @@ data/carrefour/ downloader/ node_modules/ */node_modules/ -*/Containerfile \ No newline at end of file +*/Containerfile +*.warc.zst \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 84273621e28f57e338cdfa65c8a7c95fda1945d8..03e0aff91af2b434b584dc4ce8a4a9a1b6ad77bb 100755 GIT binary patch literal 196704 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 z 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

4%O z`-u4so*4+{EHR}6!CZ%Hh*@j|(;*Ga4frMvOm7pIkBGSm=cI$VM$D{qFg5TFG3y$F zi5i5JAoKD;at0sf4&n?E4S3jK5XO5zEF28Nz)usgg@~T_fpFvV?*oxzmd(uYVRxQg zjQy;ll?zWBAsY?!%*R|gWrW;aCQ{k!T4@_9k5-hgJ^1or@>P{=+k}6dgNs>Gt7fD( z)c!|Qa&Br`X&WuKRn+P%d8lp<9v8S*rcaeWyc_w5M)oU)<+vz3jv>qMRkES@ceBU3 zRSuXcm$~qyQF0(!wD6<1l)%c##qv?*?q`$yA5H$K=%4drW%qUZzdyg?CiCPhr71Um zEO&I=s?iSm@OcrS=N_Hd%1Qw`t^#C7kDJ~F==cpFjvjH* zb7#uC2GH|mdb;!!K!*p6WMWRZkvaaY?jHWqS8@RV{e;|%Cw(gWIKBrIwA zHR=jAO-)hN*MVx_2Jky@6SxJ`0Mr*5P=E%23t#|fGN@rAKu>=f0`9;)fEhsd21$*O zXbgA)O@O9AGr$XI4tN7TKnuVZ@B=JBOQ03t53~l_0BwPGJpFUo&v6#r`T@8A{0K|} zIsw6e2ha#;40r-f0CJldpt+^Fq`5l{d<~ocmIL%uF$4$&!hmof5}^N~j|KvPE&!%D zL!DDUD4(KF^Z>O#Ku>C40$v0dumqsT$niiY0N-v)_XG6w@C=ZTbOBHZOa`Xl>U~mf z>&QWxzO#z~=u1C*(vVsMZGg4_J-Ac9Ye1dn0DAms1Jb~!1K$D^OZ$P>fC}Js;0<6S z@FuVc*bGzxTY#-V6|jxI#oLa=4qzv+3)l_p0rmoK0dE8QfLDPvz>C0o;00hcKu^ME z0uF$_JhKD2zy#j%l{T06GC=NBMq0d!P-_8t?}!x@-m6 z5}-0|fp$O#05%TQ=w2uR02L;KAYFEW3pcU{CFb>EBMghYqw-*xK0jg965De<~@u`p$pD93Zpf5n{U;uC*Fa)4bB)vaC z+(11|c433KQI>2(`hM!&FdzdM3Q$F&QYuJ>!dNsg65I%2EHDP}2Sx*J0qQ(S za&Z|zqkRyV20Q>v1xkSupcrrz;WP!93={$dKt7NMOadkXxj+su0T>V1fovcPm<~Jw zlmia~j{}baj{&oQWx!J4U%+#~5@0dF0W5Hbv=E5}00W){<^%J9XMm@Hr+_Dcxxf>^ z9AGx^Jg@>-3A_Nj0_*{H0Tf(x9i;2wTBKhD==yjAvKpZ4CC&9!n*S?E{|a0JegS?4 zegZB6XMrDq3&0P+dEh(X3*Zd!E$|KSHSjKQ8u$wM68HqD1danA0>^+4fTO?>U=Q#< z+E@4O-H_XWjlgDrM)5N67Vrje2sjA52kZo@fGt1;@G9^UunwTnt_R2)RGxH#NN>>f z*L3NiOzI^yOh(ig8NCir#i9aHkSeAQz6pp*Np1p!t>Ek0QN5JE6%hH54t3Om*n!OL zcN*N$`*)G|4nUqFTj3?DnB2J=phl@a@(l5!?tMs8IZ;1(b}!9;U8A?_6c7c46pfNj zg{d5Ir0)mz0>lyOcJ4qOUX-Cuk|%c2{8I%~nC6oV4g+Eoq*K0_3QFINqv;VgA0zz{ zAZ&%}soaS={HI7egwbbu2F*Jeo&+e$KL>;j>8Er~bfSKxYE;99+)aZJQzX1ow=Q_k zal3N5GEoC$AY4W|MLIP?OObS{^m{;5M5CZ+CY?G@4N))(Z%~}7b%s(}7 zx4ERkw9cuZXpp$NX_{+MG4W!gqO)~v|1C}PU*C|X;4~Y|c4bs;EvafG@16(!m3-A+g5%>Y1-IDC< z?v(FBr~QU@#1Clxk04PuXm&%Vsh|ys8lurt$HbidrycQbUb=xbDcWg8$n`Pag*U=;|hRMDl>Rve7*L`y6W1=8rrJV5HBkII^>3ZoMRT z^lpgzzyq!wccg}v|7w&+hXscQhvI&kCwEp_D9t23va{l&1W0^pXQiJKC-JvCE6*u- z%r>@*;$xvuHlc!bUta$Hmn}bsDe~y(;IQCu+;u5@K^G<5B7UDeZEneqrWdN8f<*+H zh@elY{A*Y!Zz}vy5Zc(Q@X#Q%khglRr<#~DE;(LGPv^XC~NU{)qYax95eD6w-=6fAPdUJhizB>Gu5693v$ag^S?S~ z?EkuZZS8%LV@6JC?uHLjdiJ_ho0H+nZC6pd_+k1lSGv6Pn9IuRRJ&EJz0{Q#U6s$` z85}S(SP*rw6wc?cy-uNJpUXW8XQgYzs-$rfCZKOnq-WTH@}V&GmTpR@0C~gD%)hc zgc4!Fk>sAaMxG4|g&X-|k{68p&~@}u{9b-l#K!}kUvu56mQWqK&23S&?6im<)*t-Q zFf2J>S2PSFP$fFy;m(&$rFCZ zWQt$Fn+g-&IiLRAHbtHp6&xNN9H~yq-IouZcs|qu>mv>}?wIap0#-gWXL)*+A|sZ< zW8ts7CcJ_yoK4gZm`;ziht{O?ljG3i@ZhN6DEjp_|F#8!c?B#em_GK1EokDE+6NY~ zn#=2PwAI>$~~CsmP(hu{3!6CY~RLh2qhaTl}!LvYPTx zSIC;CJlYQ{&Bu!uSg?v*ELcVDy?AR28Wz9TmrnjGB7bt$F}Ow@GS-%6ZaL$ne)4vn ze=+j0cZ|=R)!mJyHqnc(vM7g@GhV!?B^n;-&3Cs{e4@pV`OAY=pZsa%eH0DY3~0FG z=l%^|dUss-qd5~*M}*T>;_&7kt>CJE?+;>6om{QQp}eS-GEs~r`VTsXF^D$?9Jy?L z`=O|*JgAPR7YjZ4q z{1%lJuLlV2_S~3C*G5XMh4uyk{IJ)%$GPPjroLO7Gu&@sKe$Z1av*nW!n#P;{O@WF zoPG--;rm4;msWPYx~+%L51!*f}~Ym0{Y@c~r!u5qH474M?hD_u+pIHx4l zmM!q(OHtP1)TjCLN5=OGTlCqUT8jmK{3z9a*GN%o7jMM)U}fW$ZwHjVZ;d?l&I<>6T!dFo3cMTQQ zLcHr^|5c~|L#v0d+OktD{34aTYpAGY#Y-hdZhf-&Lm#&$m`vV9mqmJlUU85P0@gfeNpjmvt?2&}dIF_iBlOSdpS50*-B7(bK(**lEi6NZvmaET8}4tU%2L&o znrQdV$nKd9R!^$6_&l7C9gMoJg!5OZPLBxw1@*>1f`3K2HG+?%HpELVIt;$nc*^>k zQc;5yufgDrG4&!8EaEj8%^LbgjqEayb`!dJ3y+c(NAS^PSrNgH#zXFp;1v;&-$w9P zh`$-Js5gWjOG=YS{&O^R|44o@0WvId(GZ9pk$l5g$m~e&jD#$Y>rxoOQD=&yf8R17U7SVaV(|Q@DNeutF`|Zx?72i=|ZR5H- zykfaW42p>6Ma_@L@~JUsS@8dEu6j@F03RKT&K`;5!AW7=9*OF=0nY3R-@LkZ&C8e7lDMD7LkWG-^)~9xHo01a z(d{77hlPgJ;b^lNetXm+ru1t6yvuil(|tDHxE~r6L%3z*lN0ZBj@luSU%%s`M|ybj zCvEVsFcO*hNqll&RH`?o1=3xH9-5-`Q!_OSQH?%$F>m!(25LP@D@G4>z99*_Z>_^b z_tjx*;a@vk(Zf2tY9}I9=cC2TYO0^^aNeHV;&pwwVCxjGvk5PHbxZ#nPahWxsWv+5 z#GW>;%RPB(3V-3#8NGNxUHx1yUeRC6S39FE7ko%d;m!fzv1hIrN|%|Tb=IR!D!-=i z-973oi29A`*Q&p;LFq2Mi@WcL7_ozk+0sYFt9zk$A`>J{?rmM)o_IwHjKpJ`(Y z&LZAcH1NfBZ8AR#-$hqk?QTT0Cnlh_f;-mMUBgtAtu3RjOF{p^Oo$QJ^}NzKonOGL zS=84X;r8QZsd@LD(TyonZsi5Dsb_^ojUXQgJ~>2cAnV<3DdMI|T*$?ZkbVQC{NLT?2ruaYA%fJJmPeqFM*(coc z$2-ISbp40(@#7TV4tISR9)(MmRFS29aq~02xWT`Yc2)3%*qNn-`hAe0{u`9@(U_=1 z@-&ZIt+O@5*zGb;%~m=zODcJAvb{KDTxo%t$STU6T*B=~lmPeaqTI5wJbO@KQ9hrX ztyuYodlf(aT7?o)`Qi~}p9_D>uB`JIXD=zS7X=kh$;&OVNAT?N%Dv`0sLChCD;9S* zy&ax5OY!HSFDPz&{}d&=p=e}ME-!ydv2foCWtb_eFh4)DAlqKViz<}1CiV5UnI%~{ zJTn(P_-eD#++f8+?r2^#M|rvOW`(lf;5NQExX7NF#~V#S{V<8+g)b>1_=qVe;ajOh zS0+qX7907~GZeqdNtMblcm5)>DkmOS%3ZaQUAUlln8NW5M|g0_gtE#XK2r+Y^5c&v zz444oJ02KVlvAJs{jAQP*rCpXZ{?YrN>kb0xKlHa u*{PZHfEp#--Kn#9BQi~yFP~APv}@55)i%d%$p}bKNbzRfJifI?S^HnTb=D97 From 4d3793ddadafe21b7da37a8245088d2884a0212e Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 00:24:04 -0300 Subject: [PATCH 03/56] chore: dockerignore --- .dockerignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index 7cbdc73..a8eafd5 100644 --- a/.dockerignore +++ b/.dockerignore @@ -5,4 +5,6 @@ downloader/ node_modules/ */node_modules/ */Containerfile -*.warc.zst \ No newline at end of file +*.warc.zst +.git +scraper/debug/ \ No newline at end of file From 97d94037e338954b95c9dcc86f4d1ea06b732d32 Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 10:28:55 -0300 Subject: [PATCH 04/56] parsear urls xml --- bun.lockb | Bin 196704 -> 114528 bytes carrefour-link-scraper/index.ts | 3 ++- dia-link-scraper/index.ts | 3 ++- scraper/package.json | 1 + 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/bun.lockb b/bun.lockb index 03e0aff91af2b434b584dc4ce8a4a9a1b6ad77bb..c692e1be995bf993242f9db0dc73ea4ef004fd01 100755 GIT binary patch delta 22883 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 literal 196704 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 z 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 jjV#A+W123|j*=H5ydT22N0~g Date: Tue, 2 Jan 2024 10:29:29 -0300 Subject: [PATCH 05/56] bunlock --- bun.lockb | Bin 114528 -> 196736 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index c692e1be995bf993242f9db0dc73ea4ef004fd01..66e0313ad5fb4151f4874135f33c6558312c6677 100755 GIT binary patch literal 196736 zcmeFa2~>@18~?wn-5`+)iIPf)MirvcBr4LR(4c8IY0^NY5=s)1lqpn13K%Z3Tzs|ip`@8Sqb6wXxJohu~-uKAKsDuUwsknOk zt1$eRk8ut47lcE}H^6PFhqo_7$s-`h&m}}@xvC&HjYb=~*HHNjKldhk#yg=PIR~5l zcZB9tedW8Lh15v z2=WdIR)swBa-f4i1N_|>7|eOSlgV8*LbjuQ=r0yj+4plzoDuAy|xmxpzqKxOfCJmNWcA zf`bBleM6z=Kf$OJ)Hi`jf?lKYM?obZzX@~%0DckvJKcBj!8!LFg+zV5W^BWN^HC@%oT@yGxj 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�mJLD~PKgrgjB!3jQEs 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 From 5c52a12fdfb17d6e5e34a8d052704e1746f7a064 Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 10:34:43 -0300 Subject: [PATCH 06/56] juntar por ean busqueda fixes #11 --- sitio/src/routes/search/+page.server.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sitio/src/routes/search/+page.server.ts b/sitio/src/routes/search/+page.server.ts index 65f2783..7471f1e 100644 --- a/sitio/src/routes/search/+page.server.ts +++ b/sitio/src/routes/search/+page.server.ts @@ -11,7 +11,8 @@ export const load: PageServerLoad = async ({ url }) => { results = db.all( sql`select p.ean, p.name, p.image_url as imageUrl from precios_fts f join precios p on p.ean = f.ean - where f.name match ${query};`, + where f.name match ${query} + group by p.ean;`, ); } From 21439a5da5000034a804f8fef81d164a24d6af5b Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 19:05:50 -0300 Subject: [PATCH 07/56] conseguir ultima entry fixes #10 --- sitio/src/routes/+page.server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sitio/src/routes/+page.server.ts b/sitio/src/routes/+page.server.ts index 91b9e82..f43feb5 100644 --- a/sitio/src/routes/+page.server.ts +++ b/sitio/src/routes/+page.server.ts @@ -12,7 +12,7 @@ export const load: PageServerLoad = async ({ params }) => { }) .from(precios) .groupBy(precios.ean) - .having(sql`max(length(name))`) + .having(sql`max(length(name)) and max(parser_version)`) .orderBy(sql`random()`) .limit(150); const res = await q; From db008c582f52adf0b492f9c2ee47b58ceac87726 Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 19:25:31 -0300 Subject: [PATCH 08/56] solo mostrar articulos con stock en home --- sitio/src/routes/+page.server.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sitio/src/routes/+page.server.ts b/sitio/src/routes/+page.server.ts index f43feb5..2f44867 100644 --- a/sitio/src/routes/+page.server.ts +++ b/sitio/src/routes/+page.server.ts @@ -12,7 +12,7 @@ export const load: PageServerLoad = async ({ params }) => { }) .from(precios) .groupBy(precios.ean) - .having(sql`max(length(name)) and max(parser_version)`) + .having(sql`max(length(name)) and max(parser_version) and in_stock`) .orderBy(sql`random()`) .limit(150); const res = await q; From 71e66cf437564701395d14f8c5fd645b0bc10682 Mon Sep 17 00:00:00 2001 From: Nulo Date: Tue, 2 Jan 2024 19:34:35 -0300 Subject: [PATCH 09/56] no asumir que offers es solo length===1 --- scraper/common.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scraper/common.ts b/scraper/common.ts index 534800b..f84edff 100644 --- a/scraper/common.ts +++ b/scraper/common.ts @@ -32,7 +32,7 @@ const zProductLd = z.object({ name: z.string(), image: z.string(), offers: z.object({ - offers: z.tuple([ + offers: z.array( z.object({ "@type": z.literal("Offer"), price: z.number(), @@ -41,8 +41,8 @@ const zProductLd = z.object({ "http://schema.org/OutOfStock", "http://schema.org/InStock", ]), - }), - ]), + }) + ), }), }); type ProductLd = z.infer; From f80c3ad4fca0eef77b9195af2720b82ab39b8803 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 15:20:56 -0300 Subject: [PATCH 10/56] github actions --- .github/workflows/container.yml | 38 +++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/container.yml diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml new file mode 100644 index 0000000..37759a7 --- /dev/null +++ b/.github/workflows/container.yml @@ -0,0 +1,38 @@ +name: Create and publish a Docker image + +on: + push: + branches: ["master"] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }}/scraper + +jobs: + build-and-push-scraper: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + file: scraper/Containerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From 5312861c4275bdd9aeb1e4bcd5606e7534502633 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 15:24:56 -0300 Subject: [PATCH 11/56] gh actions sitio --- .github/workflows/container.yml | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/.github/workflows/container.yml b/.github/workflows/container.yml index 37759a7..0e01caa 100644 --- a/.github/workflows/container.yml +++ b/.github/workflows/container.yml @@ -6,7 +6,7 @@ on: env: REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }}/scraper + IMAGE_NAME: ${{ github.repository }} jobs: build-and-push-scraper: @@ -27,7 +27,7 @@ jobs: id: meta uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/scraper - name: Build and push Docker image uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 with: @@ -36,3 +36,30 @@ jobs: push: true tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} + build-and-push-sitio: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + - name: Log in to the Container registry + uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}/sitio + - name: Build and push Docker image + uses: docker/build-push-action@f2a1d5e99d037542a71f64918e516c093c6f3fc4 + with: + context: . + file: sitio/Containerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} From 7e58397c8ce64f2f8d67924b3b54bdd245b137fa Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 15:30:25 -0300 Subject: [PATCH 12/56] siempre guardar html debug --- scraper/scrap.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 07a473f..7d80820 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -1,5 +1,5 @@ import * as schema from "db-datos/schema.js"; -import { writeFile } from "fs/promises"; +import { writeFile, mkdir } from "fs/promises"; import { createHash } from "crypto"; import { getCarrefourProduct } from "./parsers/carrefour.js"; import { getDiaProduct } from "./parsers/dia.js"; @@ -8,7 +8,7 @@ import { join } from "path"; import { db } from "db-datos/db.js"; import pMap from "p-map"; -const DEBUG = false; +const DEBUG = true; const PARSER_VERSION = 4; export type Precio = typeof schema.precios.$inferInsert; @@ -78,6 +78,7 @@ export async function downloadList(path: string) { if (DEBUG) { const urlHash = createHash("md5").update(urlS).digest("hex"); const output = join("debug", `${urlHash}.html`); + await mkdir("debug", { recursive: true }); await writeFile(output, html); console.error(`wrote html to ${output}`); } From 087be6714ccbab6ce1faa3a2e9c8e44a4b358a59 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 16:31:00 -0300 Subject: [PATCH 13/56] reintentar scrap --- scraper/scrap.ts | 112 ++++++++++++++++++++++++++--------------------- 1 file changed, 62 insertions(+), 50 deletions(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 7d80820..582bc12 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -31,61 +31,73 @@ export async function downloadList(path: string) { await pMap( list, async (urlS) => { - let url; - try { - url = new URL(urlS); - } catch (err) { - console.error("error parseando", urlS); - return; - } - const res = await fetch(url); - if (!res.ok) { - console.debug(`skipped ${urlS} because status=${res.status} (!=200)`); - progress.skipped++; - return; - } - - const html = await res.text(); - - try { - let ish: Precioish | undefined = undefined; - if (url.hostname === "www.carrefour.com.ar") - ish = getCarrefourProduct(html); - else if (url.hostname === "diaonline.supermercadosdia.com.ar") - ish = getDiaProduct(html); - else if (url.hostname === "www.cotodigital3.com.ar") - ish = getCotoProduct(html); - else throw new Error(`Unknown host ${url.hostname}`); - - const p: Precio = { - ...ish, - fetchedAt: new Date(), - url: urlS, - parserVersion: PARSER_VERSION, - }; - - await db.insert(schema.precios).values(p); - - progress.done++; - } catch (error) { - console.error({ path, urlS, error }); - progress.errors.push({ - path, - url: urlS, - error, - }); - - if (DEBUG) { - const urlHash = createHash("md5").update(urlS).digest("hex"); - const output = join("debug", `${urlHash}.html`); - await mkdir("debug", { recursive: true }); - await writeFile(output, html); - console.error(`wrote html to ${output}`); + let res: ScrapResult = { type: "skipped" }; + for (let attempts = 0; attempts < 3; attempts++) { + res = await scrap(urlS); + if (res.type === "done") { + break; } } + if (res.type === "error") console.error(res); }, { concurrency: 32 } ); return progress; } + +type ScrapResult = + | { type: "skipped" } + | { type: "done" } + | { type: "error"; url: string; error: any }; +async function scrap(urlS: string): Promise { + let url; + try { + url = new URL(urlS); + } catch (err) { + console.error(`skipped ${urlS} because ${err}`); + return { type: "skipped" }; + } + const res = await fetch(url); + if (!res.ok) { + console.debug(`skipped ${urlS} because status=${res.status} (!=200)`); + return { type: "skipped" }; + } + + const html = await res.text(); + + try { + let ish: Precioish | undefined = undefined; + if (url.hostname === "www.carrefour.com.ar") + ish = getCarrefourProduct(html); + else if (url.hostname === "diaonline.supermercadosdia.com.ar") + ish = getDiaProduct(html); + else if (url.hostname === "www.cotodigital3.com.ar") + ish = getCotoProduct(html); + else throw new Error(`Unknown host ${url.hostname}`); + + const p: Precio = { + ...ish, + fetchedAt: new Date(), + url: urlS, + parserVersion: PARSER_VERSION, + }; + + await db.insert(schema.precios).values(p); + + return { type: "done" }; + } catch (error) { + if (DEBUG) { + const urlHash = createHash("md5").update(urlS).digest("hex"); + const output = join("debug", `${urlHash}.html`); + await mkdir("debug", { recursive: true }); + await writeFile(output, html); + console.error(`wrote html to ${output}`); + } + return { + type: "error", + url: urlS, + error, + }; + } +} From 4f5994a2e14d8aedfac7ad0bd17839c777aa2eba Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 16:42:37 -0300 Subject: [PATCH 14/56] no volver a scrapear cosas salteadas --- scraper/scrap.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 582bc12..55d94d2 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -34,7 +34,7 @@ export async function downloadList(path: string) { let res: ScrapResult = { type: "skipped" }; for (let attempts = 0; attempts < 3; attempts++) { res = await scrap(urlS); - if (res.type === "done") { + if (res.type === "done" || res.type === "skipped") { break; } } From 3c9788647b5141dee80311a431937ab58b9df42f Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 16:42:47 -0300 Subject: [PATCH 15/56] mostrar path a html debug junto al error --- scraper/scrap.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 55d94d2..4d9ae9b 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -49,7 +49,7 @@ export async function downloadList(path: string) { type ScrapResult = | { type: "skipped" } | { type: "done" } - | { type: "error"; url: string; error: any }; + | { type: "error"; url: string; error: any; debugPath: string }; async function scrap(urlS: string): Promise { let url; try { @@ -87,17 +87,17 @@ async function scrap(urlS: string): Promise { return { type: "done" }; } catch (error) { + const urlHash = createHash("md5").update(urlS).digest("hex"); + const output = join("debug", `${urlHash}.html`); if (DEBUG) { - const urlHash = createHash("md5").update(urlS).digest("hex"); - const output = join("debug", `${urlHash}.html`); await mkdir("debug", { recursive: true }); await writeFile(output, html); - console.error(`wrote html to ${output}`); } return { type: "error", url: urlS, error, + debugPath: output, }; } } From df845acc6693f7fd232e44e059c83efd6047f8b8 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 16:52:11 -0300 Subject: [PATCH 16/56] esperar entre pedidos fallidso --- scraper/scrap.ts | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 4d9ae9b..3e76cd6 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -33,6 +33,7 @@ export async function downloadList(path: string) { async (urlS) => { let res: ScrapResult = { type: "skipped" }; for (let attempts = 0; attempts < 3; attempts++) { + if (attempts !== 0) await wait(1500); res = await scrap(urlS); if (res.type === "done" || res.type === "skipped") { break; @@ -101,3 +102,7 @@ async function scrap(urlS: string): Promise { }; } } + +function wait(ms: number) { + return new Promise((resolve) => setTimeout(resolve, ms)); +} From 6256817ee15e08c087c70d86e4ca129358df52d7 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 16:55:48 -0300 Subject: [PATCH 17/56] retornar progres --- scraper/scrap.ts | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 3e76cd6..8035a13 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -18,17 +18,11 @@ export type Precioish = Omit< >; export async function downloadList(path: string) { - let progress: { - done: number; - skipped: number; - errors: { error: any; url: string; path: string }[]; - } = { done: 0, skipped: 0, errors: [] }; - let list = (await Bun.file(path).text()) .split("\n") .filter((s) => s.length > 0); - await pMap( + const results = await pMap( list, async (urlS) => { let res: ScrapResult = { type: "skipped" }; @@ -40,10 +34,29 @@ export async function downloadList(path: string) { } } if (res.type === "error") console.error(res); + return res; }, { concurrency: 32 } ); + let progress: { + done: number; + skipped: number; + errors: { error: any; url: string; debugPath: string }[]; + } = { done: 0, skipped: 0, errors: [] }; + for (const result of results) { + switch (result.type) { + case "done": + progress.done++; + break; + case "error": + progress.errors.push(result); + break; + case "skipped": + progress.skipped++; + break; + } + } return progress; } From e6f084b1da6bc89e5db3d4e4a6aa503576e71ccb Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 17:45:46 -0300 Subject: [PATCH 18/56] coto instock --- scraper/parsers/coto.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/scraper/parsers/coto.ts b/scraper/parsers/coto.ts index 96cabdb..ee2a876 100644 --- a/scraper/parsers/coto.ts +++ b/scraper/parsers/coto.ts @@ -19,7 +19,7 @@ function getEanFromText({ document }: Window) { } function getPriceFromText({ document }: Window) { const el = document.querySelector(".atg_store_newPrice"); - if (!el?.textContent) throw new Error("no encuentro el precio"); + if (!el?.textContent) return null; const nStr = el.textContent .trim() .replace("$", "") @@ -27,12 +27,16 @@ function getPriceFromText({ document }: Window) { .replace(",", "."); return parseFloat(nStr) * 100; } +function getInStock({ document }: Window) { + return !document.querySelector("product_not_available"); +} export function getCotoProduct(html: string | Buffer): Precioish { const dom = parseHTML(html); const ean = getEanFromText(dom); const precioCentavos = getPriceFromText(dom); + const inStock = getInStock(dom); const name = dom.document .querySelector("h1.product_page") @@ -40,5 +44,5 @@ export function getCotoProduct(html: string | Buffer): Precioish { const imageUrl = dom.document.querySelector(".zoom img")?.src; - return { name, imageUrl, ean, precioCentavos }; + return { name, imageUrl, ean, precioCentavos, inStock }; } From da9f2c83488dbd8213b2e8ef414af6615cbe2ce5 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 17:48:27 -0300 Subject: [PATCH 19/56] cli: poder scrappear links especificos --- scraper/cli.ts | 7 ++++++- scraper/scrap.ts | 18 ++++++++++-------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/scraper/cli.ts b/scraper/cli.ts index 3e8af80..b68bda7 100644 --- a/scraper/cli.ts +++ b/scraper/cli.ts @@ -2,7 +2,7 @@ import { scrapCarrefourProducts } from "../carrefour-link-scraper/index.js"; import { scrapCotoProducts } from "../coto-link-scraper/index.js"; import { scrapDiaProducts } from "../dia-link-scraper/index.js"; import { auto } from "./auto.js"; -import { downloadList } from "./scrap.js"; +import { downloadList, getProduct } from "./scrap.js"; if (process.argv[2] === "auto") { await auto(); @@ -12,6 +12,11 @@ if (process.argv[2] === "auto") { await scrapDiaProducts(); } else if (process.argv[2] === "scrap-coto-links") { await scrapCotoProducts(); +} else if (process.argv[2] === "scrap-link") { + const url = new URL(process.argv[3]); + const res = await fetch(url); + const text = await res.text(); + console.info(getProduct(url, text)); } else if (process.argv[2] === "scrap") { const urlLists = process.argv.slice(3); if (urlLists.length > 0) { diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 8035a13..f482492 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -60,6 +60,15 @@ export async function downloadList(path: string) { return progress; } +export function getProduct(url: URL, html: string) { + if (url.hostname === "www.carrefour.com.ar") return getCarrefourProduct(html); + else if (url.hostname === "diaonline.supermercadosdia.com.ar") + return getDiaProduct(html); + else if (url.hostname === "www.cotodigital3.com.ar") + return getCotoProduct(html); + else throw new Error(`Unknown host ${url.hostname}`); +} + type ScrapResult = | { type: "skipped" } | { type: "done" } @@ -81,14 +90,7 @@ async function scrap(urlS: string): Promise { const html = await res.text(); try { - let ish: Precioish | undefined = undefined; - if (url.hostname === "www.carrefour.com.ar") - ish = getCarrefourProduct(html); - else if (url.hostname === "diaonline.supermercadosdia.com.ar") - ish = getDiaProduct(html); - else if (url.hostname === "www.cotodigital3.com.ar") - ish = getCotoProduct(html); - else throw new Error(`Unknown host ${url.hostname}`); + let ish = getProduct(url, html); const p: Precio = { ...ish, From a322bc36fc387460d2d5c02e491c024e001e19c2 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 17:49:10 -0300 Subject: [PATCH 20/56] coto: corregir chequeo instock --- scraper/parsers/coto.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scraper/parsers/coto.ts b/scraper/parsers/coto.ts index ee2a876..0e92642 100644 --- a/scraper/parsers/coto.ts +++ b/scraper/parsers/coto.ts @@ -28,7 +28,7 @@ function getPriceFromText({ document }: Window) { return parseFloat(nStr) * 100; } function getInStock({ document }: Window) { - return !document.querySelector("product_not_available"); + return !document.querySelector(".product_not_available"); } export function getCotoProduct(html: string | Buffer): Precioish { From fa6de68f6080ca69ceecdb49942fbccbea04dd79 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 18:10:02 -0300 Subject: [PATCH 21/56] scraper: reordenar codigo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - borrar código viejo - centralizar scrapers de links --- bun.lockb | Bin 196736 -> 196048 bytes carrefour-link-scraper/package.json | 17 ----------------- dia-link-scraper/package.json | 17 ----------------- .../index.ts => link-scrapers/carrefour.ts | 0 .../index.ts => link-scrapers/coto.ts | 6 +++--- .../index.ts => link-scrapers/dia.ts | 6 +++--- .../package.json | 2 +- package.json | 4 +--- readme.md | 2 +- scraper/auto.ts | 6 +++--- scraper/cli.ts | 6 +++--- scraper/fetch.ts | 13 ------------- scraper/parsers/carrefour.ts | 2 +- scraper/{ => parsers}/common.ts | 0 scraper/parsers/dia.ts | 2 +- 15 files changed, 17 insertions(+), 66 deletions(-) delete mode 100644 carrefour-link-scraper/package.json delete mode 100644 dia-link-scraper/package.json rename carrefour-link-scraper/index.ts => link-scrapers/carrefour.ts (100%) rename coto-link-scraper/index.ts => link-scrapers/coto.ts (89%) rename dia-link-scraper/index.ts => link-scrapers/dia.ts (97%) rename {coto-link-scraper => link-scrapers}/package.json (90%) delete mode 100644 scraper/fetch.ts rename scraper/{ => parsers}/common.ts (100%) diff --git a/bun.lockb b/bun.lockb index 66e0313ad5fb4151f4874135f33c6558312c6677..39be541d5637f92d6de7e9f04fc42f1eab621f1c 100755 GIT binary patch delta 27735 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 G?Ee6XQyjto delta 27878 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 H^@;xiu2l() diff --git a/carrefour-link-scraper/package.json b/carrefour-link-scraper/package.json deleted file mode 100644 index a404536..0000000 --- a/carrefour-link-scraper/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "carrefour-link-scraper", - "type": "module", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "linkedom": "^0.16.5", - "p-map": "^7.0.1" - } -} diff --git a/dia-link-scraper/package.json b/dia-link-scraper/package.json deleted file mode 100644 index 57ff6fd..0000000 --- a/dia-link-scraper/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "dia-link-scraper", - "type": "module", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "author": "", - "license": "ISC", - "dependencies": { - "linkedom": "^0.16.5", - "p-map": "^7.0.0" - } -} diff --git a/carrefour-link-scraper/index.ts b/link-scrapers/carrefour.ts similarity index 100% rename from carrefour-link-scraper/index.ts rename to link-scrapers/carrefour.ts diff --git a/coto-link-scraper/index.ts b/link-scrapers/coto.ts similarity index 89% rename from coto-link-scraper/index.ts rename to link-scrapers/coto.ts index b25be9b..d3de22d 100644 --- a/coto-link-scraper/index.ts +++ b/link-scrapers/coto.ts @@ -1,4 +1,3 @@ -import { getHtml } from "../scraper/fetch.js"; import { parseHTML } from "linkedom"; import PQueue from "p-queue"; import { saveUrls } from "db-datos/urlHelpers.js"; @@ -28,12 +27,13 @@ function getPage(url: string) { return async () => { let html; try { - html = await getHtml(url); + const res = await fetch(url); + html = await res.text(); } catch (error) { await getPage(url)(); return; } - const { document } = parseHTML(html.toString("utf-8")); + const { document } = parseHTML(html); const hrefs = Array.from( document.querySelectorAll(".product_info_container a"), diff --git a/dia-link-scraper/index.ts b/link-scrapers/dia.ts similarity index 97% rename from dia-link-scraper/index.ts rename to link-scrapers/dia.ts index 09b825c..5d77c52 100644 --- a/dia-link-scraper/index.ts +++ b/link-scrapers/dia.ts @@ -1,7 +1,6 @@ import pMap from "p-map"; import { decodeXML } from "entities"; import { parseHTML } from "linkedom"; -import { getHtml } from "../scraper/fetch.js"; import { saveUrls } from "db-datos/urlHelpers.js"; const categorias = [ @@ -111,8 +110,9 @@ async function scrapBySite() { await pMap( links, async (url) => { - const html = await getHtml(url); - const { document } = parseHTML(html.toString("utf-8")); + const res = await fetch(url); + const html = await res.text(); + const { document } = parseHTML(html); const hrefs = Array.from( document.querySelectorAll( diff --git a/coto-link-scraper/package.json b/link-scrapers/package.json similarity index 90% rename from coto-link-scraper/package.json rename to link-scrapers/package.json index 04e7eac..ce7f074 100644 --- a/coto-link-scraper/package.json +++ b/link-scrapers/package.json @@ -1,5 +1,5 @@ { - "name": "coto-link-scraper", + "name": "link-scrapers", "type": "module", "version": "1.0.0", "description": "", diff --git a/package.json b/package.json index 30324d4..6cc95ea 100644 --- a/package.json +++ b/package.json @@ -2,9 +2,7 @@ "name": "preciazo", "private": true, "workspaces": [ - "dia-link-scraper", - "coto-link-scraper", - "carrefour-link-scraper", + "link-scrapers", "scraper", "sitio", "db-datos" diff --git a/readme.md b/readme.md index 18c1a50..847b3fb 100644 --- a/readme.md +++ b/readme.md @@ -4,7 +4,7 @@ scrapeo "masivo" de precios y datos en supermercados argentinos ## componentes (en orden de proceso) -- los link scrapers ([coto-link-scraper](./coto-link-scraper/), [dia-link-scraper](./dia-link-scraper/) y [carrefour-link-scraper](./carrefour-link-scraper)) crean listas de links a productos para scrapear +- los link scrapers ([link-scrapers/](./link-scrapers/)) crean listas de links a productos para scrapear (no hace falta correrlos porque ya hay listas armadas en [data/](./data/)) diff --git a/scraper/auto.ts b/scraper/auto.ts index b4bd8d5..21643fc 100644 --- a/scraper/auto.ts +++ b/scraper/auto.ts @@ -8,9 +8,9 @@ import { downloadList } from "./scrap.js"; import { db } from "db-datos/db.js"; import { like } from "drizzle-orm"; import { productoUrls } from "db-datos/schema.js"; -import { scrapDiaProducts } from "../dia-link-scraper/index.js"; -import { scrapCotoProducts } from "../coto-link-scraper/index.js"; -import { scrapCarrefourProducts } from "../carrefour-link-scraper/index.js"; +import { scrapDiaProducts } from "../link-scrapers/dia.js"; +import { scrapCotoProducts } from "../link-scrapers/coto.js"; +import { scrapCarrefourProducts } from "../link-scrapers/carrefour.js"; const supermercados: Supermercado[] = [ Supermercado.Carrefour, diff --git a/scraper/cli.ts b/scraper/cli.ts index b68bda7..0304ba8 100644 --- a/scraper/cli.ts +++ b/scraper/cli.ts @@ -1,6 +1,6 @@ -import { scrapCarrefourProducts } from "../carrefour-link-scraper/index.js"; -import { scrapCotoProducts } from "../coto-link-scraper/index.js"; -import { scrapDiaProducts } from "../dia-link-scraper/index.js"; +import { scrapCarrefourProducts } from "../link-scrapers/carrefour.js"; +import { scrapCotoProducts } from "../link-scrapers/coto.js"; +import { scrapDiaProducts } from "../link-scrapers/dia.js"; import { auto } from "./auto.js"; import { downloadList, getProduct } from "./scrap.js"; diff --git a/scraper/fetch.ts b/scraper/fetch.ts deleted file mode 100644 index 59bffb2..0000000 --- a/scraper/fetch.ts +++ /dev/null @@ -1,13 +0,0 @@ -export async function getHtml(url: string) { - const res = await fetch(url); - return readableToBuffer(res.body!); -} - -async function readableToBuffer(source: AsyncIterable) { - // https://stackoverflow.com/a/72891118 - const buffers = []; - for await (const data of source) { - buffers.push(data); - } - return Buffer.concat(buffers); -} diff --git a/scraper/parsers/carrefour.ts b/scraper/parsers/carrefour.ts index e3f74fa..b025f62 100644 --- a/scraper/parsers/carrefour.ts +++ b/scraper/parsers/carrefour.ts @@ -1,6 +1,6 @@ import { parseHTML } from "linkedom"; import { Precioish } from "../scrap.js"; -import { getProductJsonLd, priceFromMeta, stockFromMeta } from "../common.js"; +import { getProductJsonLd, priceFromMeta, stockFromMeta } from "./common.js"; function parseScriptJson(dom: Window, varname: string): T { const script = dom.window.document.querySelector( diff --git a/scraper/common.ts b/scraper/parsers/common.ts similarity index 100% rename from scraper/common.ts rename to scraper/parsers/common.ts diff --git a/scraper/parsers/dia.ts b/scraper/parsers/dia.ts index be3e2c5..5fdd1ca 100644 --- a/scraper/parsers/dia.ts +++ b/scraper/parsers/dia.ts @@ -1,6 +1,6 @@ import { parseHTML } from "linkedom"; import { type Precioish } from "../scrap.js"; -import { getMetaProp, getProductJsonLd, priceFromMeta } from "../common.js"; +import { getMetaProp, getProductJsonLd, priceFromMeta } from "./common.js"; export function getDiaProduct(html: string | Buffer): Precioish { const dom = parseHTML(html); From f0798e8620ef14f4fbe3d4980ddcca28f17909fd Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 18:12:55 -0300 Subject: [PATCH 22/56] link-scrapers: reutilizar codigo sitemaps --- bun.lockb | Bin 196048 -> 196064 bytes link-scrapers/carrefour.ts | 14 ++------------ link-scrapers/common.ts | 14 ++++++++++++++ link-scrapers/dia.ts | 26 ++++++++++---------------- link-scrapers/package.json | 1 + scraper/package.json | 1 - 6 files changed, 27 insertions(+), 29 deletions(-) create mode 100644 link-scrapers/common.ts diff --git a/bun.lockb b/bun.lockb index 39be541d5637f92d6de7e9f04fc42f1eab621f1c..b925de1165e4291f4b193e61e8f15280fc9a87ff 100755 GIT binary patch delta 13913 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 delta 14063 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 diff --git a/link-scrapers/carrefour.ts b/link-scrapers/carrefour.ts index 6779c81..ce92306 100644 --- a/link-scrapers/carrefour.ts +++ b/link-scrapers/carrefour.ts @@ -1,6 +1,6 @@ import pMap from "p-map"; -import { decodeXML } from "entities"; import { saveUrls } from "db-datos/urlHelpers.js"; +import { getUrlsFromSitemap } from "./common.js"; export async function scrapCarrefourProducts() { await scrapBySitemap(); @@ -26,17 +26,7 @@ async function scrapBySitemap() { async (sitemapUrl) => { const res = await fetch(sitemapUrl); const xml = await res.text(); - let urls = new Set(); - new HTMLRewriter() - .on("loc", { - text(element) { - const txt = element.text.trim(); - if (!txt) return; - urls.add(decodeXML(txt)); - }, - }) - .transform(new Response(xml)); - saveUrls(Array.from(urls)); + saveUrls(getUrlsFromSitemap(xml)); }, { concurrency: 3 } ); diff --git a/link-scrapers/common.ts b/link-scrapers/common.ts new file mode 100644 index 0000000..f4107a0 --- /dev/null +++ b/link-scrapers/common.ts @@ -0,0 +1,14 @@ +import { decodeXML } from "entities"; +export function getUrlsFromSitemap(xml: string) { + let urls = new Set(); + new HTMLRewriter() + .on("loc", { + text(element) { + const txt = element.text.trim(); + if (!txt) return; + urls.add(decodeXML(txt)); + }, + }) + .transform(new Response(xml)); + return Array.from(urls); +} diff --git a/link-scrapers/dia.ts b/link-scrapers/dia.ts index 5d77c52..5b469f6 100644 --- a/link-scrapers/dia.ts +++ b/link-scrapers/dia.ts @@ -1,7 +1,7 @@ import pMap from "p-map"; -import { decodeXML } from "entities"; import { parseHTML } from "linkedom"; import { saveUrls } from "db-datos/urlHelpers.js"; +import { getUrlsFromSitemap } from "./common.js"; const categorias = [ "https://diaonline.supermercadosdia.com.ar/almacen", @@ -81,21 +81,15 @@ async function scrapBySitemap() { "https://diaonline.supermercadosdia.com.ar/sitemap/product-5.xml", ]; - await pMap(sitemaps, async (sitemapUrl) => { - const res = await fetch(sitemapUrl); - const xml = await res.text(); - let urls = new Set(); - new HTMLRewriter() - .on("loc", { - text(element) { - const txt = element.text.trim(); - if (!txt) return; - urls.add(decodeXML(txt)); - }, - }) - .transform(new Response(xml)); - saveUrls(Array.from(urls)); - }); + await pMap( + sitemaps, + async (sitemapUrl) => { + const res = await fetch(sitemapUrl); + const xml = await res.text(); + saveUrls(getUrlsFromSitemap(xml)); + }, + { concurrency: 3 } + ); } async function scrapBySite() { diff --git a/link-scrapers/package.json b/link-scrapers/package.json index ce7f074..9ae66f9 100644 --- a/link-scrapers/package.json +++ b/link-scrapers/package.json @@ -11,6 +11,7 @@ "author": "", "license": "ISC", "dependencies": { + "entities": "^4.5.0", "linkedom": "^0.16.5", "p-queue": "^8.0.1" } diff --git a/scraper/package.json b/scraper/package.json index a3351af..edaf0ca 100644 --- a/scraper/package.json +++ b/scraper/package.json @@ -17,7 +17,6 @@ "date-fns": "^3.0.6", "db-datos": "workspace:^", "drizzle-orm": "=0.29.1", - "entities": "^4.5.0", "linkedom": "^0.16.5", "nanoid": "^5.0.4", "p-map": "^7.0.1", From e890d5f63b5640d37c067236ef7b1b4f057899b2 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 18:47:24 -0300 Subject: [PATCH 23/56] =?UTF-8?q?arreglar=20busqueda=20para=20queries=20ex?= =?UTF-8?q?tra=C3=B1as?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bun.lockb | Bin 196064 -> 137424 bytes sitio/package.json | 2 +- sitio/src/routes/search/+page.server.ts | 14 ++++++-------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/bun.lockb b/bun.lockb index b925de1165e4291f4b193e61e8f15280fc9a87ff..7e56ca4d1f8c23b7c4644a0baa92e3233d68dfad 100755 GIT binary patch delta 22430 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%0A-RZT7i# zyA;j-UvG@|%aI*KFK;Z<#&?CP&EGq(vpCroogRg|7A#x6#K+!Pd%I(kqM)5esx`~2 z?rBegLNo1##34>Xf#nGg9}N8%(Z>hgJr_m9X*&VAd9wJ`M_wtv^``jDB1d6EbInhV ztP~SBPdvAvyNz!uot7(~SvRo86t#ABJqYZmh3ju$#{6}s`QuB-q3a9+b)HD}mG{em z9Yuhj+<^%($Pc|gr;~PZ9~(CJ-!+M9^uep)jkRFV_^#9JDomo^q*ZjPv|JO8u&Zeu>|fV%;VU=;0_gZgModi1B6BeqVTIa+2lA))=J@nNd=TY8I; zo}mS5ndoqAPK-}ijgAVhy{$&2I_hYv8)EfZ?TZ`twLx-J?7!N6D_ygl4oW-PEAbf_ zyQAJzV1XVV#6?676}9W2`C~=1I%vLj?T`HD=DV}2FhJAY__$Tl#8oFw9en?q%zXM{ z2QJnJ%l>k=zT!w7Im+*kF3GV{ZxI|Uw_^jukPtaQd=M;qvK3-_Fs^(qnPP1)rT}iC zgK_!NG)xHB#4OREu3Uoovaqh4EGK7)2X(Pz^cJBZX!pzNL2Q=bA#!w0|i6z%n_(j?KO9_-B*N%hbVUSc%3IO8K) z+mE)rI`-nox=`15hQ?>MqE`n^{zjhnSY{Xx^|2Z{VQ)RzrvBUR*GJ9T?t*q8uh=^1kL)V;v)(SdvemaC_|TU)P#+ty3SPV7 z|7)8!3I7J@X>2%~Hjtxa?0Iq;sC$iZ4dl?U?+0ql`Q!c1V0y!dBjPJ2zDSpC;!L_6 z!9Elo88ZG!El^vS#k1(vIp5f;uZJRSP~Ld3JI8cmPS=0VH$J$z`n$nZrX_n8l%qW9 zpXfGnZpxxS%T@4nw>s9lTeaskV@^E)?+*UEW_{kWz0>??I=$+|vDQ;2B9>;zLGx?k zIwekK$kwVk*?EJ)3h_A3S+&Wup00`OE(Xu3t@> delta 65663 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 D5>nWw diff --git a/sitio/package.json b/sitio/package.json index 184c06a..74677bc 100644 --- a/sitio/package.json +++ b/sitio/package.json @@ -39,6 +39,6 @@ "chart.js": "^4.4.1", "chartjs-adapter-dayjs-4": "^1.0.4", "dayjs": "^1.11.10", - "drizzle-orm": "=0.29.1" + "drizzle-orm": "^0.29.1" } } diff --git a/sitio/src/routes/search/+page.server.ts b/sitio/src/routes/search/+page.server.ts index 7471f1e..fcd96d4 100644 --- a/sitio/src/routes/search/+page.server.ts +++ b/sitio/src/routes/search/+page.server.ts @@ -1,19 +1,17 @@ import { error } from "@sveltejs/kit"; -import { eq, max, sql } from "drizzle-orm"; +import { sql } from "drizzle-orm"; import type { PageServerLoad } from "./$types"; -import { db, schema } from "$lib/server/db"; -const { precios } = schema; +import { db } from "$lib/server/db"; export const load: PageServerLoad = async ({ url }) => { const query = url.searchParams.get("q"); let results: null | { ean: string; name: string; imageUrl: string }[] = null; if (query) { - results = db.all( - sql`select p.ean, p.name, p.image_url as imageUrl from precios_fts f + const sqlQuery = sql`select p.ean, p.name, p.image_url as imageUrl from precios_fts f join precios p on p.ean = f.ean - where f.name match ${query} - group by p.ean;`, - ); + where f.name match ${`"${query}"`} + group by p.ean;`; + results = db.all(sqlQuery); } return { query, results }; From 525510a8dd819330af380c22a97d79f7e6c08c8a Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 19:25:17 -0300 Subject: [PATCH 24/56] Jumbo --- data/Jumbo.txt | 3 ++ data/samples/Jumbo.100.txt | 100 +++++++++++++++++++++++++++++++++++++ db-datos/supermercado.ts | 3 ++ link-scrapers/jumbo.ts | 38 ++++++++++++++ scraper/auto.ts | 4 ++ scraper/cli.ts | 5 +- scraper/parsers/common.ts | 1 + scraper/parsers/jumbo.ts | 54 ++++++++++++++++++++ scraper/scrap.ts | 7 ++- 9 files changed, 212 insertions(+), 3 deletions(-) create mode 100644 data/Jumbo.txt create mode 100644 data/samples/Jumbo.100.txt create mode 100644 link-scrapers/jumbo.ts create mode 100644 scraper/parsers/jumbo.ts diff --git a/data/Jumbo.txt b/data/Jumbo.txt new file mode 100644 index 0000000..bfbf74f --- /dev/null +++ b/data/Jumbo.txt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6299b470d9debc9a173b40c2ba91208eb43a6c8cde02a4819e7bcd76368e4363 +size 922185 diff --git a/data/samples/Jumbo.100.txt b/data/samples/Jumbo.100.txt new file mode 100644 index 0000000..fadf390 --- /dev/null +++ b/data/samples/Jumbo.100.txt @@ -0,0 +1,100 @@ +https://www.jumbo.com.ar/huevos-de-color-avicoper-6-u-1-paquete-2/p +https://www.jumbo.com.ar/ajo-ahumado-organico-pampa-gourmet-285g/p +https://www.jumbo.com.ar/boxer-dst-raya-finita-art-b278-talle-m/p +https://www.jumbo.com.ar/yogur-bebible-ser-sachet-vainilla-900g/p +https://www.jumbo.com.ar/plato-playo-melamina-27-cm-boho-krea-2/p +https://www.jumbo.com.ar/mermelada-la-vieja-fabrica-frutos-del-bosque-350-gr/p +https://www.jumbo.com.ar/dr-lemon-vodka-pomelo-5/p +https://www.jumbo.com.ar/vino-cuvelier-los-andes-grand-vin-750cc/p +https://www.jumbo.com.ar/capsulas-cafe-cabrales-dg-cortado-x88gr/p +https://www.jumbo.com.ar/pizza-muzarella-e/p +https://www.jumbo.com.ar/filet-de-merluza-rebozado-8/p +https://www.jumbo.com.ar/ron-bacardi-carta-blanca-750-ml/p +https://www.jumbo.com.ar/sal-gruesa-celusal-1-kg/p +https://www.jumbo.com.ar/vaso-bajo-acrilico-boho-krea-2/p +https://www.jumbo.com.ar/espumante-chandon-demi-sec/p +https://www.jumbo.com.ar/jarra-electrica-smartlife-sl-ek1714wpn/p +https://www.jumbo.com.ar/espumante-dada-7-rose-dulce-750-cc/p +https://www.jumbo.com.ar/panquequera-hudson-de-aluminio-con-antiadherente-22cm/p +https://www.jumbo.com.ar/sacapuntas-de-plastico-pizzini-2un/p +https://www.jumbo.com.ar/vino-vinas-de-alvear-tinto-750ml/p +https://www.jumbo.com.ar/campera-mujer-puffer-larga/p +https://www.jumbo.com.ar/tabla-de-quesos/p +https://www.jumbo.com.ar/frutos-del-bosque-frutas-del-sur-x400gr/p +https://www.jumbo.com.ar/blister-resaltador-flash-amarillo-x-1-un/p +https://www.jumbo.com.ar/alim-whiskas-gatitos-carne-y-leche-500gr/p +https://www.jumbo.com.ar/detergente-polvo-zorro-blue-3k-x-1un/p +https://www.jumbo.com.ar/media-vestir-hombre-1s10471-negro/p +https://www.jumbo.com.ar/nachos-macritas-ketchup-x90g/p +https://www.jumbo.com.ar/pack-x3-medias-juvenil-liso-t-5-elemento/p +https://www.jumbo.com.ar/set-de-vehiculos-emergencias-duravit/p +https://www.jumbo.com.ar/carbon-patagonia-x-4kgs/p +https://www.jumbo.com.ar/rejilla-mr-trapo-cocina-algodon/p +https://www.jumbo.com.ar/jugo-exprimido-pura-frutta-arandanos-manzana-verde-x-1l/p +https://www.jumbo.com.ar/media-dama-invisible-alta-nyb-urb-2/p +https://www.jumbo.com.ar/boxer-nino-raya-violeta-2-colores-dst-t-10/p +https://www.jumbo.com.ar/barra-zafran-caju-y-sem-de-zapallo-x112g/p +https://www.jumbo.com.ar/iniciador-de-fuego-maderasa/p +https://www.jumbo.com.ar/queso-mozzarella-barraza-x-500grs-paq-gr-500/p +https://www.jumbo.com.ar/vaso-de-vidrio-cuadrado-360-cc/p +https://www.jumbo.com.ar/shampoo-sedal-jengibre-y-ricino-190ml/p +https://www.jumbo.com.ar/roller-gel-filgo-gel-pop-glitter-1un/p +https://www.jumbo.com.ar/una-familia-anormal-el-misterio-de-prh/p +https://www.jumbo.com.ar/veggie-stick-tomate-y-oliva-via-vita-x-50grs/p +https://www.jumbo.com.ar/bowl-stor-bicolor-mickey-mouse/p +https://www.jumbo.com.ar/vino-blanco-don-valentin-lacrado-750-ml/p +https://www.jumbo.com.ar/un-vecino-anormal-2-prh/p +https://www.jumbo.com.ar/paleta-pet-cancat-mordillo-ice/p +https://www.jumbo.com.ar/aceitunas-nucete-premium-descarozadas-180-gr/p +https://www.jumbo.com.ar/caja-plastica-6l-teen-boy-pv23-krea-2/p +https://www.jumbo.com.ar/vino-santa-julia-chardonnay-x-750-cc/p +https://www.jumbo.com.ar/protecor-solar-dermaglos-bebes-fps65-120gr/p +https://www.jumbo.com.ar/oregano-100-gr/p +https://www.jumbo.com.ar/puerro-song/p +https://www.jumbo.com.ar/repuesto-difusor-sandia-pepino-350-ml-2/p +https://www.jumbo.com.ar/botellas-plasticas-origin-580ml-rosa-2/p +https://www.jumbo.com.ar/nescafe-dolca-original-x-170gr/p +https://www.jumbo.com.ar/tapa-empanada-veggie-signo-de-oro-x-500g/p +https://www.jumbo.com.ar/inflador-de-pie-bestway-air-hammer/p +https://www.jumbo.com.ar/ketchup-ahumado-marian-arytza-400g/p +https://www.jumbo.com.ar/sal-marina-finas-hierbas-ahumada-s-tacc-450g/p +https://www.jumbo.com.ar/jugo-smudis-pomelo-500ml-brk-0-5-lt/p +https://www.jumbo.com.ar/limpiador-antihongos-ayudin-removedor-activo-envase-economico-450-ml/p +https://www.jumbo.com.ar/marcador-permanente-punta-redonda-color-negro/p +https://www.jumbo.com.ar/galletitas-dulces-con-chips-de-chocolate-pepitos-119g/p +https://www.jumbo.com.ar/afeitadora-bic-comfort-twin-l5p4-2/p +https://www.jumbo.com.ar/canvas-20x20-cm-paisajes-04-krea/p +https://www.jumbo.com.ar/turron-georgalos-de-mani-con-chocolate-x-90-gr/p +https://www.jumbo.com.ar/arroz-vanguardia-elaborado-largo-fino/p +https://www.jumbo.com.ar/set-x-3-pastafrola-fija-n-14/p +https://www.jumbo.com.ar/pulpa-fina-basilico-mutti-400-gr/p +https://www.jumbo.com.ar/vino-tinto-elementos-malbec-750-cc/p +https://www.jumbo.com.ar/enjuague-bucal-listerine-antisarro-suave-sn-alcohol-x250/p +https://www.jumbo.com.ar/almohaditas-lasfor-avellana-200-grs/p +https://www.jumbo.com.ar/vino-tinto-los-haroldos-estate-cabernet-sauvignon-750-ml/p +https://www.jumbo.com.ar/peluche-funnyland-maxtoys-tibalt-perro-28cm/p +https://www.jumbo.com.ar/cafetera-filtro-negro-electrolux-1-2-litros/p +https://www.jumbo.com.ar/media-nina-ciudadella-minnie-t2/p +https://www.jumbo.com.ar/portaretrato-colores-13x18cm-4c-krea4136010100/p +https://www.jumbo.com.ar/lustramuebles-blem-madera-aceite-de-argan-aerosol-360cc/p +https://www.jumbo.com.ar/sriracha-sauce-hashi-x250ml-2/p +https://www.jumbo.com.ar/plato-hondo-22-1-cm-ceramica-blanca/p +https://www.jumbo.com.ar/limpiador-harpic-banos-sarro-y-manchas-495ml/p +https://www.jumbo.com.ar/shampoo-dove-real-poder-de-las-plantas-purificacion-jengibre-300-ml/p +https://www.jumbo.com.ar/aromatizador-glade-mini-gel-car-3/p +https://www.jumbo.com.ar/carpeta-con-10-folios-a4/p +https://www.jumbo.com.ar/sabana-king-caracol-krea/p +https://www.jumbo.com.ar/leche-en-polvo-nutribaby-1-hmo-x-800-grs/p +https://www.jumbo.com.ar/chalitas-viavita-clasicas-x-100-grs-sin-tacc/p +https://www.jumbo.com.ar/hervidor-tramontina-14cm-cm-x1/p +https://www.jumbo.com.ar/aceitunas-de-gordal-ybarra-x240gr-2/p +https://www.jumbo.com.ar/tableta-vizzio-relleno-nugaton-x100g-2/p +https://www.jumbo.com.ar/mortadela-paladini-fetas-finas-x-200-gr-2/p +https://www.jumbo.com.ar/budin-limon-y-amapolas/p +https://www.jumbo.com.ar/vino-chac-chac-sauvingnon-blanc-lata-269cc/p +https://www.jumbo.com.ar/whisky-chivas-regal-18-yo-700cc/p +https://www.jumbo.com.ar/copa-de-vidrio-rigolleau-6/p +https://www.jumbo.com.ar/notcreamcheese-210-gr/p +https://www.jumbo.com.ar/oso-con-miel-de-abejas-cuisine-co-340-gr/p +https://www.jumbo.com.ar/difusor-aromas-spirit-spirit-win-home-250ml-x1/p +https://www.jumbo.com.ar/exprimidor-ultracomb-ex-2302/p diff --git a/db-datos/supermercado.ts b/db-datos/supermercado.ts index e46fe9a..1073db6 100644 --- a/db-datos/supermercado.ts +++ b/db-datos/supermercado.ts @@ -2,15 +2,18 @@ export enum Supermercado { Dia = "Dia", Carrefour = "Carrefour", Coto = "Coto", + Jumbo = "Jumbo", } export const hosts: { [host: string]: Supermercado } = { "diaonline.supermercadosdia.com.ar": Supermercado.Dia, "www.carrefour.com.ar": Supermercado.Carrefour, "www.cotodigital3.com.ar": Supermercado.Coto, + "www.jumbo.com.ar": Supermercado.Jumbo, }; export const colorBySupermercado: { [supermercado in Supermercado]: string } = { [Supermercado.Dia]: "#d52b1e", [Supermercado.Carrefour]: "#19549d", [Supermercado.Coto]: "#e20025", + [Supermercado.Jumbo]: "#2dc850", }; diff --git a/link-scrapers/jumbo.ts b/link-scrapers/jumbo.ts new file mode 100644 index 0000000..77356d5 --- /dev/null +++ b/link-scrapers/jumbo.ts @@ -0,0 +1,38 @@ +import pMap from "p-map"; +import { saveUrls } from "db-datos/urlHelpers.js"; +import { getUrlsFromSitemap } from "./common.js"; + +export async function scrapJumboProducts() { + await scrapBySitemap(); +} + +async function scrapBySitemap() { + // de https://www.jumbo.com.ar/sitemap.xml + const sitemaps = [ + "https://www.jumbo.com.ar/sitemap/product-1.xml", + "https://www.jumbo.com.ar/sitemap/product-10.xml", + "https://www.jumbo.com.ar/sitemap/product-11.xml", + "https://www.jumbo.com.ar/sitemap/product-12.xml", + "https://www.jumbo.com.ar/sitemap/product-13.xml", + "https://www.jumbo.com.ar/sitemap/product-14.xml", + "https://www.jumbo.com.ar/sitemap/product-15.xml", + "https://www.jumbo.com.ar/sitemap/product-2.xml", + "https://www.jumbo.com.ar/sitemap/product-3.xml", + "https://www.jumbo.com.ar/sitemap/product-4.xml", + "https://www.jumbo.com.ar/sitemap/product-5.xml", + "https://www.jumbo.com.ar/sitemap/product-6.xml", + "https://www.jumbo.com.ar/sitemap/product-7.xml", + "https://www.jumbo.com.ar/sitemap/product-8.xml", + "https://www.jumbo.com.ar/sitemap/product-9.xml", + ]; + + await pMap( + sitemaps, + async (sitemapUrl) => { + const res = await fetch(sitemapUrl); + const xml = await res.text(); + saveUrls(getUrlsFromSitemap(xml)); + }, + { concurrency: 3 } + ); +} diff --git a/scraper/auto.ts b/scraper/auto.ts index 21643fc..774fea4 100644 --- a/scraper/auto.ts +++ b/scraper/auto.ts @@ -11,6 +11,7 @@ import { productoUrls } from "db-datos/schema.js"; import { scrapDiaProducts } from "../link-scrapers/dia.js"; import { scrapCotoProducts } from "../link-scrapers/coto.js"; import { scrapCarrefourProducts } from "../link-scrapers/carrefour.js"; +import { scrapJumboProducts } from "../link-scrapers/jumbo.js"; const supermercados: Supermercado[] = [ Supermercado.Carrefour, @@ -59,6 +60,9 @@ class Auto { case "Carrefour": await scrapCarrefourProducts(); break; + case "Jumbo": + await scrapJumboProducts(); + break; } this.inform( `[scrapUrls[${supermercado}]] Tardó ${formatMs(performance.now() - t0)}` diff --git a/scraper/cli.ts b/scraper/cli.ts index 0304ba8..8223973 100644 --- a/scraper/cli.ts +++ b/scraper/cli.ts @@ -1,6 +1,7 @@ import { scrapCarrefourProducts } from "../link-scrapers/carrefour.js"; import { scrapCotoProducts } from "../link-scrapers/coto.js"; import { scrapDiaProducts } from "../link-scrapers/dia.js"; +import { scrapJumboProducts } from "../link-scrapers/jumbo.js"; import { auto } from "./auto.js"; import { downloadList, getProduct } from "./scrap.js"; @@ -12,11 +13,13 @@ if (process.argv[2] === "auto") { await scrapDiaProducts(); } else if (process.argv[2] === "scrap-coto-links") { await scrapCotoProducts(); +} else if (process.argv[2] === "scrap-jumbo-links") { + await scrapJumboProducts(); } else if (process.argv[2] === "scrap-link") { const url = new URL(process.argv[3]); const res = await fetch(url); const text = await res.text(); - console.info(getProduct(url, text)); + console.info(await getProduct(url, text)); } else if (process.argv[2] === "scrap") { const urlLists = process.argv.slice(3); if (urlLists.length > 0) { diff --git a/scraper/parsers/common.ts b/scraper/parsers/common.ts index f84edff..a4a2a99 100644 --- a/scraper/parsers/common.ts +++ b/scraper/parsers/common.ts @@ -31,6 +31,7 @@ const zProductLd = z.object({ "@type": z.literal("Product"), name: z.string(), image: z.string(), + sku: z.string().optional(), offers: z.object({ offers: z.array( z.object({ diff --git a/scraper/parsers/jumbo.ts b/scraper/parsers/jumbo.ts new file mode 100644 index 0000000..b26b09f --- /dev/null +++ b/scraper/parsers/jumbo.ts @@ -0,0 +1,54 @@ +import { parseHTML } from "linkedom"; +import { type Precioish } from "../scrap.js"; +import { getProductJsonLd, priceFromMeta, stockFromMeta } from "./common.js"; +import { z } from "zod"; + +const zJumboSearch = z.tuple([ + z.object({ + items: z.array( + z.object({ + ean: z.string(), + }) + ), + }), +]); + +async function getEanFromSearch(sku: string) { + const url = new URL( + "https://www.jumbo.com.ar/api/catalog_system/pub/products/search" + ); + url.searchParams.set("fq", `skuId:${sku}`); + const res = await fetch(url); + const json = await res.json(); + const parsed = zJumboSearch.parse(json); + const ean = parsed[0].items[0].ean; + if (!parsed[0].items.every((x) => x.ean === ean)) { + throw new Error("Inesperado: no todos los items tienen el mismo EAN"); + } + return ean; +} + +export async function getJumboProduct( + html: string | Buffer +): Promise { + const dom = parseHTML(html); + const precioCentavos = priceFromMeta(dom); + const inStock = stockFromMeta(dom); + + const ld = getProductJsonLd(dom); + const name = ld.name; + const imageUrl = ld.image; + + const retailerSku = ld.sku; + if (!retailerSku) + throw new Error("No encontré el SKU de Jumbo para pedir el EAN"); + const ean = await getEanFromSearch(retailerSku); + + return { + name, + imageUrl, + ean, + precioCentavos, + inStock, + }; +} diff --git a/scraper/scrap.ts b/scraper/scrap.ts index f482492..6b723df 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -7,6 +7,7 @@ import { getCotoProduct } from "./parsers/coto.js"; import { join } from "path"; import { db } from "db-datos/db.js"; import pMap from "p-map"; +import { getJumboProduct } from "./parsers/jumbo.js"; const DEBUG = true; const PARSER_VERSION = 4; @@ -60,12 +61,14 @@ export async function downloadList(path: string) { return progress; } -export function getProduct(url: URL, html: string) { +export async function getProduct(url: URL, html: string): Promise { if (url.hostname === "www.carrefour.com.ar") return getCarrefourProduct(html); else if (url.hostname === "diaonline.supermercadosdia.com.ar") return getDiaProduct(html); else if (url.hostname === "www.cotodigital3.com.ar") return getCotoProduct(html); + else if (url.hostname === "www.jumbo.com.ar") + return await getJumboProduct(html); else throw new Error(`Unknown host ${url.hostname}`); } @@ -90,7 +93,7 @@ async function scrap(urlS: string): Promise { const html = await res.text(); try { - let ish = getProduct(url, html); + let ish = await getProduct(url, html); const p: Precio = { ...ish, From 1ce87c4fce893f77106e8f7c46d4d953a85785eb Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 19:27:19 -0300 Subject: [PATCH 25/56] esperar mas --- scraper/scrap.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scraper/scrap.ts b/scraper/scrap.ts index 6b723df..195d424 100644 --- a/scraper/scrap.ts +++ b/scraper/scrap.ts @@ -27,7 +27,7 @@ export async function downloadList(path: string) { list, async (urlS) => { let res: ScrapResult = { type: "skipped" }; - for (let attempts = 0; attempts < 3; attempts++) { + for (let attempts = 0; attempts < 6; attempts++) { if (attempts !== 0) await wait(1500); res = await scrap(urlS); if (res.type === "done" || res.type === "skipped") { From f15405320406b6ab94dfc7eadd8bf6fb0f9c6a14 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 19:28:03 -0300 Subject: [PATCH 26/56] lockfile --- bun.lockb | Bin 137424 -> 197096 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index 7e56ca4d1f8c23b7c4644a0baa92e3233d68dfad..b17e5a08f71f3728a4f8bdbfe9578f4c64fd314b 100755 GIT binary patch delta 55522 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 delta 12522 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 uG*i>8xETL`Aq;9BX*K_BRQq Date: Thu, 4 Jan 2024 19:32:16 -0300 Subject: [PATCH 27/56] activar jumbo en auto --- db-datos/supermercado.ts | 7 ++++++- scraper/auto.ts | 8 +------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/db-datos/supermercado.ts b/db-datos/supermercado.ts index 1073db6..1e167a0 100644 --- a/db-datos/supermercado.ts +++ b/db-datos/supermercado.ts @@ -4,7 +4,12 @@ export enum Supermercado { Coto = "Coto", Jumbo = "Jumbo", } - +export const supermercados: Supermercado[] = [ + Supermercado.Carrefour, + Supermercado.Coto, + Supermercado.Dia, + Supermercado.Jumbo, +]; export const hosts: { [host: string]: Supermercado } = { "diaonline.supermercadosdia.com.ar": Supermercado.Dia, "www.carrefour.com.ar": Supermercado.Carrefour, diff --git a/scraper/auto.ts b/scraper/auto.ts index 774fea4..482e774 100644 --- a/scraper/auto.ts +++ b/scraper/auto.ts @@ -1,7 +1,7 @@ import { mkdtemp, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Supermercado, hosts } from "db-datos/supermercado.js"; +import { Supermercado, hosts, supermercados } from "db-datos/supermercado.js"; import PQueue from "p-queue"; import { formatDuration, intervalToDuration } from "date-fns"; import { downloadList } from "./scrap.js"; @@ -13,12 +13,6 @@ import { scrapCotoProducts } from "../link-scrapers/coto.js"; import { scrapCarrefourProducts } from "../link-scrapers/carrefour.js"; import { scrapJumboProducts } from "../link-scrapers/jumbo.js"; -const supermercados: Supermercado[] = [ - Supermercado.Carrefour, - Supermercado.Coto, - Supermercado.Dia, -]; - // hacemos una cola para el scrapeo para no tener varios writers a la BD y no sobrecargar la CPU const scrapQueue = new PQueue({ concurrency: 4 }); From 2f14580142fb99b88f77213fa1810b38464a0fda Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 19:38:41 -0300 Subject: [PATCH 28/56] actualizar drizzle-orm sitio --- bun.lockb | Bin 197096 -> 137424 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index b17e5a08f71f3728a4f8bdbfe9578f4c64fd314b..7e56ca4d1f8c23b7c4644a0baa92e3233d68dfad 100755 GIT binary patch delta 12522 zcmeI3d3aUTxyH{r36OyU1SAk4%u}FYR3SoS(hBSbC*TkvGFu|zY-_G!q^-AbTUxzK zTt-VPT9s(g0!oM&CKVGEnM4w1L?lr`Monb8zxQP4KIwg^*V{gQ?mz5@-+I^g?zPw6 z-`;EQvvT&K{Fn7NEs1%od&;9vKQr@wTPJ5ik=^|KLw{bmZ`;^8(d(Cw-nKF6xfbi< zV+S=42DD6iJlwivR+fnbfxun&Oq-HD>EG@=MI0XpJhCaU_Eb%grn?!(=50r zub=+Q3D<CEee5 zU-qo>ZJSby!TXKS>u?if@XrfA?{k!-sZ*iFp0J#?x!YTd&N(PdGr?p z9vU`sY4P(D8^*i+qs*Y^pKUeP_G}fM+l-zBy#-Q1S@nSW&>xi80MH_hhCxsVu7M~R z23n+QKU@JzZIwR)q#kHNb0Zy$B+!npm&;OH<=+@_|5ml*(Y`NL$7B3hssp{*kN>_7 zt=@1P4b{PTU$guTe~22pV1DadZ7|W_N~*)24C-|XXpu4~0(U52kv4#b6tMgg8rlC3 z>L7|8RkyydYA`&hqha~s>i77=H~7Eq;D2dflhK6^AdzkV0`*{7bw7WjIwQ+Lm#VsnNcR2#glfJIstNJ3Mk-PE{->&kVp+8vsIA)lPT!ZR`#qp;_JS6v;(efHU!?q7)piF!{T=kz*V5dG zB|{C%{RXvFJE#EZ7yf#wI{eCyrHYS$Zsp^krM7DQ$%tF6YFDYjt&Xew72l`o;I!XP zs_oABde+x-sFn+<+MkcCtyaZ>TuKd*I+3VaRjo^*9mb%FV^#PnKi>E2`~LT74DB!R z+c)(!(cdmt6?NF$H)?Avep~zy+8xy;>V>LlZxz0(+Q;`V^L?rMy~2;BO0>TpOZk@@ z7~mUHRnsZ7;Xt$zdL623brZ_Jz$g{I${*{mAMg88RrM*WduEF7OI4jpq5f};_yeme zGNwn2YE?DckH1fOoIleeSC8cf{nk?THVf7HdIW8PT2$>8qFSV?K1ZQ;FZl6`GFham zzU0SJoxi`J>i<>WN2@;;m-s7|p<4I4-$1Gjmiw_(J1j&sGS;G6wN8bvYX1(g&TlcQ z_7rak@sq&m=Eeq391fS1c>|B;I7eJRwz zRj4)`DAQm5RkK&^|A$OpBbR0*ZFNkwXRX>^vHX8v_Ig|7KK=XCR&`%Jz10~R2hxkP z*T|nT7n%cdcD`pe8@b%y*Fc;93)lPmzu*yGoV^Ajvsm3pnzd??>Y;dX_NrN{7O5Tq z7iX`U#p+D-@%1tVEK-f3EBsh`arSy~_Ilx2twzel+3UsG>pwJmZNuQvG**M?g0okf zzVuETz3eBpa%sqBE%Qv2&0iL_injeR3*W8MhanQwR| z))o@2AWB~DnRuJMJZz^g57`YwA)8bXw#^Gdc2?oGfiz7Q7KXSo1STA=e`-XbKVTu!$e6oZDrW@TN$zoR(hs|tsp8V z%6Q8&$u{q;uzl*SkUdM(+72%Y+hIi^yST_RZEY1%B~jKYk8h;&SCQW;@>}hhjy7{O z`K=~DqRuvU4f(Ahzcrpov4un{h?3WOrkl-POMYv~k0{k9ts}p6uyPq=Crfm+Jo9*M2<7@@xcsqDY*kswfEnJr^ zT$e2#?*xW#<+^O;x@`5#BwIyPNtE@mXQtTvkICa>^4R8?X*P2k*JT^mh3Ka?_7kql zCtR0LJd5w{v$g?shWnh;nS&F2>z1#@#N@JZLM3%84>| zduEo++f9DE$&V=44&Ot5d&qB(XJ*?fqDrEyy`K4{&EHFYd&zH~XCAeg`^aw}`4Rov z#_lJ-{p7dbGjnYr(F&sEPd)P+oBb*IeM){r^K8-q@;g9&2R!q8TS8P!l=_)x9=AE4 zk>6+JM`UfvLGn9Deg{1>-^e?%E_;s{D}T!hgXna1^HEYW}&SjswB$#!ZXj?{4dDw3-bHYGcVZ8FUjvq@*{f5 z#(qV9Uy{5s&vyB}BzUsb70$iOu<% z{JthXqGdMaDES>FzoVXc!=D5CHWC;ut`D3)zw^vyoAVv{ zeMf#oTW!i|@;gm_r#-XHmJyW_rJwQ4c02bB`JEv@qB5Iymi*3=-&xP>v=v0cEi zv)ksKBfoRxN3_=tKTm$=$?v>p_S-6=%JZT5S;jL5=I5L6{6!|@LWc05%QPnJ#u|(w z8HZeK5F;jtF*Ar!;RU58dDTuNPxE_E^H)x|jF%4C$vNUw+St(#j9V@^Gc!!oK| zS`0?N7>orm7^hu@jB*(nu^4AvUM$8_u^4ADg69KnM4TDphQ;A5j-!cjRdF<_l#vyW z5#{pZF&4#Rgz96|ahdfo#@5Ful2OmahA?767&Ai{v93_Y3K_`_FydWy1B~enFgC~t zxuk{|%^Omi)exhhE0IwwBefAmg3D=y@jxSt-7=cElmv_}2^jMdFq*nD8KpAP8)Gzc za~osKX^e4LMv_Zwg3+%D#)2joEnJ0+av2$yU?jV|OHA0ba>pdC-SDPJ8@Eu>)>TQ` zxf>FZ_AX!2!I@@AN0%w-d>FL_GKzg|xNpH7V(#NH=q}whn>2_XAy1m?$$tabPo{Z7g%}vIblZn9sgxXZOePhjpf})wmi<;jks$apNRc1+Ib?NqvH)Cqdw5D;- z`aeW?VuCyKu}RN8cfNXIA{zMvSbzKK4T={1L9AG_RDC0?<#G(g`f{b_i{HM!r!Qxd zv;j*Rs;d5gzSQ@w^gZ?e63|a>kHghK#N`rX(xJBq3N-ftNe}iRrZy>r`JW= zmY+xjUIq0r$oKRbeXCZo4EDYH)ZdCYfxwW6$M-!4aX_?2EK(#r~qp*u_l4Z?n)f!7s&1gSx; z+?}kv3+{${0`AIPrc;R%=zPlAJ|;A!{+EPy}4 zpWs7`Tj60)|Qy+y*m1x5*&Tkk<&;i|X&-6zFZa-mHHK z2jO!#1h2tgVF@e+4b(?qHvA&s&h0QG6ZG4c9?%ndL2s9^+qBQs%fb)fL-+{vKIc5D zH)gscKL)*EEP?0XdH6FdgmHAU5As&)WZ4TE3^Tn)!*thbzH@CLjFe}$Fs78JoM(60>i;(sT) z3wFcX@GiUu9{d>e)R+u=b*1#R_b0F&K7wtq1xCVkunF`i*^K6*e?nh^G%i(tXn+@l zBY2D9Rp^bs0q;%fdR`WxJJ6l53wFaEa4q+mt4EBdrl;U~D29o|8_lszrDk)+H2ZnjwT!i8pB=jyFnWDqv&Ax7<9B>!(q_Ab($u?EugWg zF-j7VG20zY1>+VTG%YkSI%t}hprUTMU04wXouLzSgk)$69iR>9A=m=+)U6BAPzMr0 z?XP%YOQAKi0v%XOXbbJ2 zJ*0rn(2t-8DAS&B4d`t3f!@%qI{V&k@qW`MbQ#XoFcgNk!~4y+T#c-Cuom6|-DesA ze}&gzG5iHyffwM<@I0ss?MMS_0Xz+Ppa=8gFcE$WzkzI+4pU$A*gRgP=~g!#41zw-M19{5W!>=hhr+&6(GFt^Nc) zgJdWL<#7N$g&j}^J7GWUgLv2t4PY1S0S&{wAg>{)uX6YjzJRZ|@XsGKy^_8rIO3xd zrw{ex=&{IMnb4JL?Zb~eoZ9n8*x=7iliUOvUqcH$sx=FUg;T^Qp)H(%JK#I0gm2(m zr~*w8&Z1FhG@Pcc_>AwJ^XqDNo;tIN$oe4aZ<`yLMbvbpPeOf6>*Kl(sH2)r)v?;u zwAD_v1AVCJQ*=M|eTqR-8J#vAxTZ8puo2oE5}_Higd|h1dct?9%RFSlxyg8%4qXmc zKtD)_0ni_=1P#^aU@*uZ44M^P1)3pgy|%d)wC^9oHK5USH98b@m3sN8u69H8W2~AL znxklbawFUTH64tkeuxb;kNpV@2R8ig?L6uu;5ty-47dfdKy#ixY^#qyO))gp(7|cy z5r)SD8PyFm4|$J<`s~%ss*SWkjp{R4>oi;@fHKoMZL{VM436jLYC=z+} zHCsKo-H?;ZpNTQI^zPoXJ5L5&eK0-J;=_*li{e{7=CA3=$B)Z6ZjxFIq(M^}JXd)~ z&*fR5(U=> z+?yv%@8G6@J0jf^aP3Z_rvh%wN%K127sQ`3vsqp6yHh5yt{LTCIBhD-sDj_0F}Zck zjDm(y!5;PLreILRV3%lincXBfTk%&-feAq? zA--!l)+IQiU}NWCTVvW65cD-Bu^^>uaC9*KF3lBLdcJI&H#IoWJvKEsk%K=rH8>$| zq9&0nE1J5Srv*E?k3I}0x*gMkU$}YGf_>v|&%R?u>b+C$nRJ)iTor6pu=mzrRd$QW z78F0f?jG;n>n9DZY#NMMZ4!g?AB^hg8l4YziJP8SZH{f`MobO1D9Ab=Y+~Z)G^=*k uG*i>8xETL`Aq;9BX*K_BRQq+MDw6Q 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 From 16a51e41b1467231c630200094721bbf0c3346a7 Mon Sep 17 00:00:00 2001 From: Nulo Date: Thu, 4 Jan 2024 19:39:21 -0300 Subject: [PATCH 29/56] actualizar drizzle-orm --- bun.lockb | Bin 137424 -> 41440 bytes db-datos/package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index 7e56ca4d1f8c23b7c4644a0baa92e3233d68dfad..acda6896ed4bc44b89a8a3c904f75c33cd5ed148 100755 GIT binary patch delta 7814 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 Date: Thu, 4 Jan 2024 19:45:56 -0300 Subject: [PATCH 30/56] arreglar types productpreview --- sitio/src/lib/ProductPreview.svelte | 6 ++++-- sitio/src/routes/+page.svelte | 6 +++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/sitio/src/lib/ProductPreview.svelte b/sitio/src/lib/ProductPreview.svelte index cf377b9..17fa6cc 100644 --- a/sitio/src/lib/ProductPreview.svelte +++ b/sitio/src/lib/ProductPreview.svelte @@ -1,8 +1,10 @@ - {product.name} + {#if product.imageUrl} + {product.name} + {/if}

{product.name}

diff --git a/sitio/src/routes/+page.svelte b/sitio/src/routes/+page.svelte index 349bd3b..e16cb94 100644 --- a/sitio/src/routes/+page.svelte +++ b/sitio/src/routes/+page.svelte @@ -3,6 +3,10 @@ import type { PageData } from "./$types"; export let data: PageData; + $: precios = data.precios.filter( + (d): d is { ean: string; name: string; imageUrl: string | null } => + !!d.name, + );

WIP

@@ -32,7 +36,7 @@

Random