← 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
M DW-Programming/ImportNewSkufromURL/lib/scrapers/armani-casa-new-products-scraper.tsA DW-Programming/ImportNewSkufromURL/scripts/armani-recrawl-artifact.ts
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 →