← back to Fb21 Mfr Images
FB21 Koroseal Fibre: reactivate 18 + swap 17 primary images from Goodrich mfr page (live)
044b6735accee33711a40800aab355d60e363e1b · 2026-07-14 09:58:16 -0700 · Steve
Files touched
A .gitignoreA apply_fb21.sh
Diff
commit 044b6735accee33711a40800aab355d60e363e1b
Author: Steve <steve@designerwallcoverings.com>
Date: Tue Jul 14 09:58:16 2026 -0700
FB21 Koroseal Fibre: reactivate 18 + swap 17 primary images from Goodrich mfr page (live)
---
.gitignore | 3 +++
apply_fb21.sh | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 78 insertions(+)
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..1873518
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+staging/
+*.log
+.DS_Store
diff --git a/apply_fb21.sh b/apply_fb21.sh
new file mode 100755
index 0000000..a4ba902
--- /dev/null
+++ b/apply_fb21.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+# FB21 (Koroseal Fibre) — activate 18 + swap primary image on 17 (FB21-05 keeps its image)
+# Steve-approved in-session. Live store: designer-laboratory-sandbox.myshopify.com
+set -uo pipefail
+TOKEN="$(grep '^SHOPIFY_ADMIN_TOKEN=' ~/Projects/secrets-manager/.env | cut -d= -f2)"
+STORE="designer-laboratory-sandbox.myshopify.com"
+VER="2024-10"
+BASE="https://$STORE/admin/api/$VER"
+H_TOK="X-Shopify-Access-Token: $TOKEN"
+IMGBASE="https://www.goodrichglobal.com/singapore/wp-content/uploads/2024/11"
+NO_IMG="FB21-05" # 404 on Goodrich — activate only, keep existing image
+
+# sku:productid (one per line)
+PAIRS="FB21-01:7766998286387
+FB21-02:7766998450227
+FB21-03:7766998482995
+FB21-04:7766998515763
+FB21-05:7766998548531
+FB21-06:7766998712371
+FB21-07:7766998745139
+FB21-08:7766998253619
+FB21-09:7766998908979
+FB21-10:7766998941747
+FB21-11:7766999105587
+FB21-12:7766999138355
+FB21-13:7766999334963
+FB21-14:7766999498803
+FB21-15:7766999531571
+FB21-16:7766999695411
+FB21-17:7766999728179
+FB21-18:7766999892019"
+
+echo "$PAIRS" | while IFS=: read -r sku id; do
+ [ -z "$sku" ] && continue
+ # 1) status -> active
+ st=$(curl -s -o /tmp/fb_st.json -w "%{http_code}" -X PUT "$BASE/products/$id.json" \
+ -H "$H_TOK" -H "Content-Type: application/json" \
+ -d "{\"product\":{\"id\":$id,\"status\":\"active\"}}")
+ echo "[$sku] status->active HTTP $st"
+ sleep 0.5
+
+ if [ "$sku" = "$NO_IMG" ]; then
+ echo "[$sku] image: SKIP (no mfr image on Goodrich; keeping existing)"
+ continue
+ fi
+
+ # 2) capture existing image ids
+ old_ids=$(curl -s "$BASE/products/$id/images.json" -H "$H_TOK" | python3 -c 'import sys,json
+try:
+ d=json.load(sys.stdin); print(" ".join(str(i["id"]) for i in d.get("images",[])))
+except Exception: print("")')
+
+ # 3) add mfr image at position 1
+ src="$IMGBASE/$sku.jpg"
+ new=$(curl -s -X POST "$BASE/products/$id/images.json" -H "$H_TOK" -H "Content-Type: application/json" \
+ -d "{\"image\":{\"src\":\"$src\",\"position\":1,\"alt\":\"$sku Koroseal Fibre wallcovering\"}}")
+ new_id=$(echo "$new" | python3 -c 'import sys,json
+try:
+ d=json.load(sys.stdin); print(d.get("image",{}).get("id",""))
+except Exception: print("")')
+ if [ -z "$new_id" ]; then
+ echo "[$sku] image POST FAILED — keeping old images. resp: $(echo "$new" | head -c 200)"
+ continue
+ fi
+ echo "[$sku] new image id=$new_id posted (old: ${old_ids:-none})"
+ sleep 1
+
+ # 4) delete old images
+ for oid in $old_ids; do
+ dc=$(curl -s -o /dev/null -w "%{http_code}" -X DELETE "$BASE/products/$id/images/$oid.json" -H "$H_TOK")
+ echo "[$sku] deleted old image $oid HTTP $dc"
+ sleep 0.3
+ done
+done
+echo "DONE"
(oldest)
·
back to Fb21 Mfr Images
·
FB21 finish: Sample@$4.25 variants + Online Store publish (1 0704df6 →