[object Object]

← back to Designer Wallcoverings

auto-save: 2026-07-17T21:17:52 (5 files) — DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts pending-approval/boost-filter-consolidation-2026-06-25 scripts/pr-contact-for-price vendor-scrapers/china-seas-refresh DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts

c584c39ae42209d9102165b833ed92aeec4123e9 · 2026-07-17 21:17:57 -0700 · Steve Abrams

Files touched

Diff

commit c584c39ae42209d9102165b833ed92aeec4123e9
Author: Steve Abrams <steve@designerwallcoverings.com>
Date:   Fri Jul 17 21:17:57 2026 -0700

    auto-save: 2026-07-17T21:17:52 (5 files) — DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts pending-approval/boost-filter-consolidation-2026-06-25 scripts/pr-contact-for-price vendor-scrapers/china-seas-refresh DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts
---
 .../scrapers/armani-casa-new-products-scraper.ts   | 11 +++++++++--
 .../scripts/armani-recrawl-artifact.ts             | 22 ++++++++++++++++++++++
 2 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts b/DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts
index f41494d2..ba3c087d 100644
--- a/DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts
+++ b/DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.ts
@@ -153,7 +153,12 @@ async function fetchDetail(
 export async function scrapeArmaniCasaNewProducts(
   params?: ScrapeParams
 ): Promise<ArmaniCasaProduct[]> {
-  const maxResults = params?.maxResults && params.maxResults > 0 ? params.maxResults : 20;
+  const maxResults =
+    params?.maxResults && params.maxResults > 0
+      ? params.maxResults
+      : process.env.ARMANI_MAX_RESULTS
+        ? parseInt(process.env.ARMANI_MAX_RESULTS, 10)
+        : 20;
 
   const csrf = await getCsrfToken();
   const grid = parseGrid(await fetchGridHtml(csrf));
@@ -163,7 +168,9 @@ export async function scrapeArmaniCasaNewProducts(
   }
 
   const products: ArmaniCasaProduct[] = [];
-  const MAX_DETAIL_PAGES = 12; // keep runtime bounded; each pattern yields ~6-8 colorways
+  const MAX_DETAIL_PAGES = process.env.ARMANI_MAX_DETAIL_PAGES
+    ? parseInt(process.env.ARMANI_MAX_DETAIL_PAGES, 10)
+    : 12; // keep runtime bounded; each pattern yields ~6-8 colorways (env-overridable for full recrawl)
   for (const card of grid.slice(0, MAX_DETAIL_PAGES)) {
     if (products.length >= maxResults) break;
     try {
diff --git a/DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts b/DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts
new file mode 100644
index 00000000..57446229
--- /dev/null
+++ b/DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts
@@ -0,0 +1,22 @@
+// One-off full recrawl of Armani Casa → JSON artifact (read-only w.r.t. the DB).
+// Steve email 2026-07-17: "recrawl Armani casa even before we have all pricing."
+import scrapeArmaniCasaNewProducts from '../lib/scrapers/armani-casa-new-products-scraper';
+import { writeFileSync } from 'fs';
+
+(async () => {
+  const started = new Date().toISOString();
+  const products = await scrapeArmaniCasaNewProducts({ maxResults: 5000 });
+  const out = {
+    scraped_at: started,
+    finished_at: new Date().toISOString(),
+    source: 'https://www.armanicasa-wallcoverings.com',
+    count: products.length,
+    products,
+  };
+  const path = `/tmp/armani-recrawl-${started.replace(/[:.]/g, '-')}.json`;
+  writeFileSync(path, JSON.stringify(out, null, 2));
+  console.log(`\n💾 wrote ${products.length} products → ${path}`);
+})().catch((e) => {
+  console.error('RECRAWL FAILED:', e);
+  process.exit(1);
+});

← fc91adb7 auto-save: 2026-07-17T20:47:45 (4 files) — pending-approval/  ·  back to Designer Wallcoverings  ·  auto-save: 2026-07-17T21:48:00 (4 files) — pending-approval/ 4baaac97 →