← back to Kravet Sheet Sync 2026 04 20

recrawl_worklist.sh

36 lines

#!/usr/bin/env bash
# recrawl_worklist.sh — scoped all_images re-crawl for kravet from the yolo worklist.
#
# Reads the dedup-tagged worklist built 2026-06-10 and runs kravet_image_catalog.py
# only for the SKUs you select. Produces a JSONL of captured image rows; LOADING
# that JSONL into dw_unified.kravet_sku_images and backfilling kravet_catalog.all_images
# are SEPARATE, GATED prod writes (see pending-approval/kravet-recrawl.md).
#
# Usage:
#   ./recrawl_worklist.sh netnet     # crawl ONLY the 3 genuinely net-net-new SKUs (default)
#   ./recrawl_worklist.sh all        # crawl ALL 5576 net-new-missing SKUs (heavy)
#   ./recrawl_worklist.sh <SKU...>   # crawl explicit SKUs
#
# This script ONLY runs the crawl (network read + local JSONL write). It does NOT
# write to any database.

set -euo pipefail
HERE="$(cd "$(dirname "$0")" && pwd)"
WORKLIST="$HOME/.claude/yolo-queue/output/kravet-recrawl-worklist.tsv"
MODE="${1:-netnet}"; shift || true

case "$MODE" in
  netnet) SKUS=$(awk -F'\t' 'NR>1 && $5=="NET_NET_NEW"{print $2}' "$WORKLIST") ;;
  all)    SKUS=$(awk -F'\t' 'NR>1{print $2}' "$WORKLIST") ;;
  *)      SKUS="$MODE $*" ;;
esac

N=$(printf '%s\n' $SKUS | grep -c . || true)
echo "[recrawl] mode=$MODE  skus=$N"
[ "$N" -eq 0 ] && { echo "nothing to crawl"; exit 0; }

OUT="$HERE/kravet_recrawl_$(date +%Y%m%d_%H%M%S).jsonl"
python3 "$HERE/kravet_image_catalog.py" --test-skus $SKUS --output "$OUT" --threads 8
echo "[recrawl] wrote $OUT"
echo "[recrawl] NEXT (gated): load JSONL -> kravet_sku_images, then run backfill_all_images_from_sku_images.sql"