[object Object]

← back to Designer Wallcoverings

PJ scraper pass 2: fix detail--row regex (ng-if attrs hid Fire Rating/CFA/Leed), suffix-SKU base-item fallback, cutoff bump

426995c5ffcdc169a29373a64efa4e963f1071ef · 2026-06-10 15:22:46 -0700 · SteveStudio2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

Files touched

Diff

commit 426995c5ffcdc169a29373a64efa4e963f1071ef
Author: SteveStudio2 <stevestudio2@SteveStacStudio.lan>
Date:   Wed Jun 10 15:22:46 2026 -0700

    PJ scraper pass 2: fix detail--row regex (ng-if attrs hid Fire Rating/CFA/Leed), suffix-SKU base-item fallback, cutoff bump
    
    Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---
 DW-Programming/pj-vendor-spec-scraper.js | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/DW-Programming/pj-vendor-spec-scraper.js b/DW-Programming/pj-vendor-spec-scraper.js
index 62b8ec52..c8eff316 100644
--- a/DW-Programming/pj-vendor-spec-scraper.js
+++ b/DW-Programming/pj-vendor-spec-scraper.js
@@ -26,7 +26,7 @@ const pool = process.env.DATABASE_URL
   ? new Pool({ connectionString: process.env.DATABASE_URL })
   : new Pool({ host: '/tmp', database: 'dw_unified' }); // local socket, peer auth
 
-const RUN_CUTOFF = '2026-06-10 00:00:00';
+const RUN_CUTOFF = '2026-06-10 22:30:00'; // pass 2: fire-rating regex fix
 const DELAY_MS = 2000;
 const LOG = `${__dirname}/pj-spec-scrape.log`;
 const PROGRESS = `${__dirname}/pj-spec-scrape-progress.json`;
@@ -79,7 +79,8 @@ const decodeEntities = (s) =>
 
 function parseSpecs(html) {
   const specs = {};
-  const re = /<div class="detail--row">\s*<div class="detail--label[^"]*">([^<]+)<\/div>\s*<div class="detail--item[^"]*">\s*([\s\S]*?)\s*<\/div>/g;
+  // detail--row can carry attrs like ng-if=true (Fire Rating / CFA / Leed rows)
+  const re = /<div class="detail--row"[^>]*>\s*<div class="detail--label[^"]*">([^<]+)<\/div>\s*<div class="detail--item[^"]*">\s*([\s\S]*?)\s*<\/div>/g;
   let m;
   while ((m = re.exec(html)) !== null) {
     const label = m[1].trim();
@@ -131,7 +132,10 @@ function resolveItem(row) {
   if (row.pj_item_number) return String(row.pj_item_number).trim();
   if (/^[0-9]{2,6}[A-Z]{0,3}$/i.test(row.mfr_sku.trim())) return row.mfr_sku.trim();
   const m = (row.product_url || '').match(/phillipjeffries\.com\/(?:shop\/CARD-[^/]+\/)?([0-9]{2,6}[A-Z]{0,3})\b/i);
-  return m ? m[1] : null;
+  if (m) return m[1];
+  // suffix SKUs like 4412-PNL16 -> try base numeric item
+  const base = row.mfr_sku.trim().match(/^([0-9]{2,6})[-_]/);
+  return base ? base[1] : null;
 }
 
 async function updateRow(id, cols, specs, cardCode, item) {

← 90279f43 china_seas scraper: capture all_images=[imageUrl] (single-im  ·  back to Designer Wallcoverings  ·  Add fix-24h-new-skus.js: title-case + cost/price + price_upd 0f0ded51 →