Skip to content

Commit 9dc610b

Browse files
author
TechStack Global
committed
Add local product images for Dell SD25TB4 and LG 27US500-W - permanent fix
1 parent f70a369 commit 9dc610b

22 files changed

+266
-39
lines changed

ADD_PRODUCT_IMAGE.bat

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
@echo off
2+
:: =============================================
3+
:: TechStack Global - Add Product Image Tool
4+
:: =============================================
5+
:: HOW TO USE:
6+
:: DRAG AND DROP an image file onto this .bat file
7+
:: OR run: add_product_image.bat "C:\path\to\image.jpg" "product-name" primary
8+
::
9+
:: EXAMPLES:
10+
:: add_product_image.bat "C:\Users\Me\Desktop\monitor.jpg" "samsung-32-4k" primary
11+
:: add_product_image.bat "C:\Users\Me\Desktop\ports.jpg" "samsung-32-4k" secondary
12+
13+
SETLOCAL
14+
15+
SET BLOG_DIR=c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog
16+
17+
:: ---- If dragged onto bat file, use first arg as image ----
18+
IF "%~1"=="" (
19+
echo.
20+
echo TechStack Global - Add Product Image
21+
echo =====================================
22+
echo HOW TO USE:
23+
echo.
24+
echo 1. DRAG AND DROP your image onto this file, OR
25+
echo 2. Run: add_product_image.bat "image.jpg" "product-name" primary/secondary
26+
echo.
27+
echo EXAMPLES:
28+
echo add_product_image.bat "C:\photo.jpg" "samsung-32-4k" primary
29+
echo add_product_image.bat "C:\photo.jpg" "samsung-32-4k" secondary
30+
echo.
31+
pause
32+
EXIT /B
33+
)
34+
35+
SET SOURCE_IMAGE=%~1
36+
37+
:: ---- If only 1 arg (drag+drop), prompt for name and type ----
38+
IF "%~2"=="" (
39+
echo.
40+
echo Image: %SOURCE_IMAGE%
41+
echo.
42+
SET /P PRODUCT_NAME=Enter product name (e.g. samsung-32-4k):
43+
SET /P IMAGE_TYPE=Primary or secondary? (primary/secondary):
44+
) ELSE (
45+
SET PRODUCT_NAME=%~2
46+
SET IMAGE_TYPE=%~3
47+
IF "%IMAGE_TYPE%"=="" SET IMAGE_TYPE=primary
48+
)
49+
50+
SET DEST_NAME=%PRODUCT_NAME%-%IMAGE_TYPE%.jpg
51+
SET POSTS_DEST=%BLOG_DIR%\posts\%DEST_NAME%
52+
SET ASSETS_DEST=%BLOG_DIR%\assets\images\products\%DEST_NAME%
53+
54+
echo.
55+
echo Copying "%SOURCE_IMAGE%"
56+
echo -> posts\%DEST_NAME%
57+
echo -> assets\images\products\%DEST_NAME%
58+
echo.
59+
60+
copy /Y "%SOURCE_IMAGE%" "%POSTS_DEST%"
61+
copy /Y "%SOURCE_IMAGE%" "%ASSETS_DEST%"
62+
63+
IF EXIST "%POSTS_DEST%" (
64+
echo SUCCESS! Image saved.
65+
echo.
66+
echo Now use this path in your HTML:
67+
echo.
68+
echo In posts/your-review.html: src="%DEST_NAME%"
69+
echo In blog.html or other pages: src="assets/images/products/%DEST_NAME%"
70+
echo.
71+
) ELSE (
72+
echo ERROR: Copy failed. Check the source path.
73+
)
74+
75+
pause

amazon-stack.html

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,11 @@ <h3><a href="posts/surface-laptop-studio-2-review.html">Surface Laptop Studio 2<
118118

119119
<div class="blog-card glass-panel" style="border-top: 3px solid var(--accent);">
120120
<div class="blog-category">Home Office</div>
121-
<h3><a href="posts/lg-27us500-w-ultrafine-monitor-review.html">LG 27US500-W Ultrafine Review</a>
121+
<h3><a href="posts/lg-27us500-w-ultrafine-monitor-review.html">
122+
<img src="https://m.media-amazon.com/images/I/71R-r8EAn2L._AC_SL1500_.jpg"
123+
alt="LG 27US500-W Ultrafine 4K"
124+
style="width:100%; height:180px; object-fit:contain; border-radius:8px; margin-bottom:1rem; padding: 1rem; background: white;">
125+
LG 27US500-W Ultrafine Review</a>
122126
</h3>
123127
<p>Expand your workspace. The 4K monitor providing retina-level text clarity for students and
124128
professionals.</p>
@@ -152,7 +156,10 @@ <h3><a href="posts/samsung-990-pro-ssd-review.html">Samsung 990 PRO SSD 2TB Revi
152156
<div class="blog-grid" style="grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));">
153157
<div class="blog-card glass-panel" style="border-top: 3px solid #00c3ff;">
154158
<div class="blog-category">Hardware Accessories</div>
155-
<h3><a href="posts/dell-thunderbolt-smart-dock-review.html">Dell SD25TB4 Pro Thunderbolt 4 Dock</a>
159+
<h3><a href="posts/dell-thunderbolt-smart-dock-review.html">
160+
<img src="assets/images/products/dell-sd25tb4-box.jpg" alt="Dell SD25TB4 Pro Dock"
161+
style="width:100%; height:180px; object-fit:contain; border-radius:8px; margin-bottom:1rem; padding: 1rem; background: white;">
162+
Dell SD25TB4 Pro Thunderbolt 4 Dock</a>
156163
</h3>
157164
<p>Stop messing with dongles. The ultimate single-cable 130W 4K docking station for remote
158165
workflows.</p>
567 KB
Loading
172 KB
Loading
175 KB
Loading
92.6 KB
Loading
34.4 KB
Loading

blog.html

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,9 +58,8 @@ <h1>Tech Stack Reviews & Guides</h1>
5858
<!-- Dell Thunderbolt 4 Dock -->
5959
<div class="blog-card glass-panel" style="border-top: 3px solid #00c3ff;">
6060
<div class="blog-category">Hardware Accessories</div>
61-
<img src="https://images-na.ssl-images-amazon.com/images/P/B0FBXD383M.01._SCLZZZZZZZ_.jpg"
62-
alt="Dell SD25TB4 Pro Docking Station"
63-
style="width:100%; height:200px; object-fit:contain; border-radius:8px; margin-bottom:1rem; padding: 1rem; background: white;">
61+
<img src="assets/images/products/dell-sd25tb4-box.jpg" alt="Dell SD25TB4 Pro Docking Station"
62+
style="width:100%; height:220px; object-fit:cover; border-radius:8px; margin-bottom:1rem;">
6463
<h3><a href="posts/dell-thunderbolt-smart-dock-review.html">Dell Thunderbolt 4 Smart Dock Review</a>
6564
</h3>
6665
<p>Are you still plugging in 5 different cables every morning? The definitive 2026 connectivity solution
@@ -72,9 +71,8 @@ <h3><a href="posts/dell-thunderbolt-smart-dock-review.html">Dell Thunderbolt 4 S
7271
<!-- LG 4K Monitor Review -->
7372
<div class="blog-card glass-panel" style="border-top: 3px solid var(--accent);">
7473
<div class="blog-category">Remote Setup</div>
75-
<img src="https://images-na.ssl-images-amazon.com/images/P/B0D9R7Q449.01._SCLZZZZZZZ_.jpg"
76-
alt="LG 27US500-W Ultrafine 4K"
77-
style="width:100%; height:200px; object-fit:contain; border-radius:8px; margin-bottom:1rem; padding: 1rem; background: white;">
74+
<img src="assets/images/products/lg-27us500w-primary.jpg" alt="LG 27US500-W Ultrafine 4K"
75+
style="width:100%; height:220px; object-fit:cover; border-radius:8px; margin-bottom:1rem;">
7876
<h3><a href="posts/lg-27us500-w-ultrafine-monitor-review.html">LG 27US500-W Ultrafine Monitor Review</a>
7977
</h3>
8078
<p>The definitive budget 4K monitor upgrade for remote workers, students, and freelancers.</p>

check_images_tool.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import sys
2+
import urllib.request
3+
import re
4+
5+
def check_asin_images(asin):
6+
print(f"Checking images for ASIN: {asin}")
7+
# Try the standard ASIN-based URL pattern first
8+
for i in range(1, 10):
9+
v = f"{i:02d}"
10+
url = f"https://images-na.ssl-images-amazon.com/images/P/{asin}.{v}._SCLZZZZZZZ_.jpg"
11+
try:
12+
req = urllib.request.Request(url, method='HEAD')
13+
with urllib.request.urlopen(req) as resp:
14+
if resp.status == 200:
15+
content_length = resp.getheader('Content-Length')
16+
if content_length and int(content_length) > 5000:
17+
print(f"VALID: {url} (Size: {content_length})")
18+
else:
19+
print(f"INVALID (small/empty): {url}")
20+
except Exception as e:
21+
# print(f"ERROR: {url} - {e}")
22+
pass
23+
24+
if __name__ == "__main__":
25+
asins = ["B0D9R7Q449", "B0FBXD383M"]
26+
for asin in asins:
27+
check_asin_images(asin)

copy_lg_images.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
import shutil
2+
src1 = r"C:\Users\PMLS\.gemini\antigravity\brain\8acb5e45-297b-4c05-ae50-1d7cdeac50b0\media__1772154222166.jpg"
3+
src2 = r"C:\Users\PMLS\.gemini\antigravity\brain\8acb5e45-297b-4c05-ae50-1d7cdeac50b0\media__1772154257524.jpg"
4+
dst1a = r"c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog\posts\lg-27us500w-primary.jpg"
5+
dst1b = r"c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog\assets\images\products\lg-27us500w-primary.jpg"
6+
dst2a = r"c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog\posts\lg-27us500w-secondary.jpg"
7+
dst2b = r"c:\Users\PMLS\Desktop\Youtube Shorts\b2b_blog\assets\images\products\lg-27us500w-secondary.jpg"
8+
shutil.copy2(src1, dst1a)
9+
shutil.copy2(src1, dst1b)
10+
shutil.copy2(src2, dst2a)
11+
shutil.copy2(src2, dst2b)
12+
print("All 4 files copied successfully.")

0 commit comments

Comments
 (0)