File size: 11,829 Bytes
60da2e3 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 | const fs = require('fs');
const path = require('path');
const https = require('https');
const http = require('http');
const customerDir = path.resolve(__dirname, '../../../apps/customer-web/public/images/products');
const adminDir = path.resolve(__dirname, '../../../apps/admin-web/public/images/products');
const apiDir = path.resolve(__dirname, '../uploads/products');
[customerDir, adminDir, apiDir].forEach(d => {
if (!fs.existsSync(d)) {
fs.mkdirSync(d, { recursive: true });
}
});
// Curated high quality clothing photos from Unsplash
const imageUrls = [
"https://images.unsplash.com/photo-1603252109303-2751441dd157?auto=format&fit=crop&w=800&q=80", // 1. Classic Oxford Cotton Shirt
"https://images.unsplash.com/photo-1598033129183-c4f50c736f10?auto=format&fit=crop&w=800&q=80", // 2. Vintage Chambray Workshirt
"https://images.unsplash.com/photo-1626497764746-6dc36546b388?auto=format&fit=crop&w=800&q=80", // 3. Striped Casual Linen Shirt
"https://images.unsplash.com/photo-1521572267360-ee0c2909d518?auto=format&fit=crop&w=800&q=80", // 4. Basic White Crewneck Tee
"https://images.unsplash.com/photo-1583743814966-8936f5b7be1a?auto=format&fit=crop&w=800&q=80", // 5. Basic Charcoal Crewneck Tee
"https://images.unsplash.com/photo-1618354691373-d851c5c3a990?auto=format&fit=crop&w=800&q=80", // 6. Textured Knit Henley Shirt
"https://images.unsplash.com/photo-1581655353564-df123a1eb820?auto=format&fit=crop&w=800&q=80", // 7. Pique Polo Shirt
"https://images.unsplash.com/photo-1589310243389-96a5483213a8?auto=format&fit=crop&w=800&q=80", // 8. Indigo Denim Shirt
"https://images.unsplash.com/photo-1617627143750-d86bc21e42bb?auto=format&fit=crop&w=800&q=80", // 9. Handloom Cotton Kurta
"https://images.unsplash.com/photo-1596755094514-f87e34085b2c?auto=format&fit=crop&w=800&q=80", // 10. Printed Resort Collar Shirt
"https://images.unsplash.com/photo-1611312449412-6cefac5dc3e4?auto=format&fit=crop&w=800&q=80", // 11. Flannel Plaid Overshirt
"https://images.unsplash.com/photo-1503342217505-b0a15ec3261c?auto=format&fit=crop&w=800&q=80", // 12. Slim Fit Graphic Tee
"https://images.unsplash.com/photo-1618244972963-dbee1a7edc95?auto=format&fit=crop&w=800&q=80", // 13. Classic White Silk Blouse
"https://images.unsplash.com/photo-1585487000160-6ebcfceb0d03?auto=format&fit=crop&w=800&q=80", // 14. Sage Green Cami Top
"https://images.unsplash.com/photo-1614975058789-41316d0e2e9c?auto=format&fit=crop&w=800&q=80", // 15. Ribbed Knit Mockneck Top
"https://images.unsplash.com/photo-1609357605129-26f69add5d6e?auto=format&fit=crop&w=800&q=80", // 16. Terracotta Linen Top
"https://images.unsplash.com/photo-1503342217505-b0a15ec3261c?auto=format&fit=crop&w=800&q=80", // 17. Striped Boatneck Tee
"https://images.unsplash.com/photo-1564257631407-4deb1f99d992?auto=format&fit=crop&w=800&q=80", // 18. Boho Floral Chiffon Blouse
"https://images.unsplash.com/photo-1598554747436-c9293d6a588f?auto=format&fit=crop&w=800&q=80", // 19. Oversized Satin Button-Down
"https://images.unsplash.com/photo-1502716119720-b23a93e5fe1b?auto=format&fit=crop&w=800&q=80", // 20. Lace Trim Tank Top
"https://images.unsplash.com/photo-1515886657613-9f3515b0c78f?auto=format&fit=crop&w=800&q=80", // 21. Sleeveless Crop Top
"https://images.unsplash.com/photo-1583496661160-fb5886a0aaaa?auto=format&fit=crop&w=800&q=80", // 22. Embroidered Georgette Tunic
"https://images.unsplash.com/photo-1595777457583-95e059d581b8?auto=format&fit=crop&w=800&q=80", // 23. Floral Print Summer Dress
"https://images.unsplash.com/photo-1612336307429-8a898d10e223?auto=format&fit=crop&w=800&q=80", // 24. Linen Wrap Midi Dress
"https://images.unsplash.com/photo-1610030469983-98e550d6193c?auto=format&fit=crop&w=800&q=80", // 25. Silk Embroidered Kurti
"https://images.unsplash.com/photo-1605763240000-7e93b172d754?auto=format&fit=crop&w=800&q=80", // 26. Chiffon Pleated Maxi Dress
"https://images.unsplash.com/photo-1572804013309-59a88b7e92f1?auto=format&fit=crop&w=800&q=80", // 27. Tiered Cotton Sundress
"https://images.unsplash.com/photo-1631857455684-a54a2f03665f?auto=format&fit=crop&w=800&q=80", // 28. Emerald Silk Anarkali Suit
"https://images.unsplash.com/photo-1566174053879-31528523f8ae?auto=format&fit=crop&w=800&q=80", // 29. Velvet Cocktail Party Dress
"https://images.unsplash.com/photo-1610030469983-98e550d6193c?auto=format&fit=crop&w=800&q=80", // 30. Handblock Printed Saree
"https://images.unsplash.com/photo-1585487000160-6ebcfceb0d03?auto=format&fit=crop&w=800&q=80", // 31. Polka Dot Shirt Dress
"https://images.unsplash.com/photo-1539109136881-3be0616acf4b?auto=format&fit=crop&w=800&q=80", // 32. Ribbed Bodycon Knit Dress
"https://images.unsplash.com/photo-1617627143750-d86bc21e42bb?auto=format&fit=crop&w=800&q=80", // 33. Chikankari Cotton Kurta Set
"https://images.unsplash.com/photo-1496747611176-843222e1e57c?auto=format&fit=crop&w=800&q=80", // 34. Satin Evening Slip Dress
"https://images.unsplash.com/photo-1541099649105-f69ad21f3246?auto=format&fit=crop&w=800&q=80", // 35. Slim Fit Indigo Jeans
"https://images.unsplash.com/photo-1475178626620-a4d074967452?auto=format&fit=crop&w=800&q=80", // 36. Vintage Stonewash Jeans
"https://images.unsplash.com/photo-1624378439575-d8705ad7ae80?auto=format&fit=crop&w=800&q=80", // 37. Utility Khaki Chinos
"https://images.unsplash.com/photo-1509551388413-e18d0ac5d495?auto=format&fit=crop&w=800&q=80", // 38. Off-White Linen Trousers
"https://images.unsplash.com/photo-1582562124811-c09040d0a901?auto=format&fit=crop&w=800&q=80", // 39. Charcoal Tailored Trousers
"https://images.unsplash.com/photo-1569411032431-07598b0012c2?auto=format&fit=crop&w=800&q=80", // 40. Forest Green Pleated Skirt
"https://images.unsplash.com/photo-1542272604-787c3835535d?auto=format&fit=crop&w=800&q=80", // 41. Denim A-Line Skirt
"https://images.unsplash.com/photo-1594633312681-425c7b97ccd1?auto=format&fit=crop&w=800&q=80", // 42. Black Wide-Leg Trousers
"https://images.unsplash.com/photo-1517462964-21fdcec3f25b?auto=format&fit=crop&w=800&q=80", // 43. Cotton Cargo Joggers
"https://images.unsplash.com/photo-1512436991641-6745cdb1723f?auto=format&fit=crop&w=800&q=80", // 44. Flannel Lounge Pants
"https://images.unsplash.com/photo-1541099649105-f69ad21f3246?auto=format&fit=crop&w=800&q=80", // 45. High-Waisted Mom Jeans
"https://images.unsplash.com/photo-1591195853828-11db59a44f6b?auto=format&fit=crop&w=800&q=80", // 46. Performance Athletic Shorts
"https://images.unsplash.com/photo-1591047139829-d91aecb6caea?auto=format&fit=crop&w=800&q=80", // 47. Suede Trucker Jacket
"https://images.unsplash.com/photo-1544022613-e87ca75a784a?auto=format&fit=crop&w=800&q=80", // 48. Vintage Wash Denim Jacket
"https://images.unsplash.com/photo-1507679799987-c73779587ccf?auto=format&fit=crop&w=800&q=80", // 49. Structured Navy Wool Blazer
"https://images.unsplash.com/photo-1551488831-00ddcb6c6bd3?auto=format&fit=crop&w=800&q=80", // 50. Grey Cable-Knit Cardigan
"https://images.unsplash.com/photo-1578587018452-892bacefd3f2?auto=format&fit=crop&w=800&q=80", // 51. Heavyweight Sherpa Fleece
"https://images.unsplash.com/photo-1548883354-7622d03aca27?auto=format&fit=crop&w=800&q=80", // 52. Hooded Utility Windbreaker
"https://images.unsplash.com/photo-1576995853123-5a10305d93c0?auto=format&fit=crop&w=800&q=80", // 53. Fine Merino Wool Sweater
"https://images.unsplash.com/photo-1556821840-3a63f95609a7?auto=format&fit=crop&w=800&q=80", // 54. Oversized Cotton Hoodie
"https://images.unsplash.com/photo-1544923246-77307dd654cb?auto=format&fit=crop&w=800&q=80", // 55. Lightweight Down Puffer Jacket
"https://images.unsplash.com/photo-1620331311520-246422fd82f9?auto=format&fit=crop&w=800&q=80", // 56. Denim Jacket with Shearling
"https://images.unsplash.com/photo-1611312449412-6cefac5dc3e4?auto=format&fit=crop&w=800&q=80", // 57. Classic Plaid Shacket
"https://images.unsplash.com/photo-1544441893-675973e31985?auto=format&fit=crop&w=800&q=80", // 58. Double-Breasted Trench Coat
"https://images.unsplash.com/photo-1544816155-12df9643f363?auto=format&fit=crop&w=800&q=80", // 59. Natural Canvas Tote Bag
"https://images.unsplash.com/photo-1622560480605-d83c853bc5c3?auto=format&fit=crop&w=800&q=80", // 60. Full Grain Leather Belt
"https://images.unsplash.com/photo-1522337360788-8b13dee7a37e?auto=format&fit=crop&w=800&q=80", // 61. Woolen Knit Scarf
"https://images.unsplash.com/photo-1590874103328-eac38a683ce7?auto=format&fit=crop&w=800&q=80", // 62. Vintage Leather Sling Bag
"https://images.unsplash.com/photo-1627123424574-724758594e93?auto=format&fit=crop&w=800&q=80", // 63. Minimalist Leather Wallet
"https://images.unsplash.com/photo-1576871337632-b9aef4c17ab9?auto=format&fit=crop&w=800&q=80", // 64. Ribbed Knit Beanie Hat
"https://images.unsplash.com/photo-1590874103328-eac38a683ce7?auto=format&fit=crop&w=800&q=80", // 65. Woven Straw Tote Bag
"https://images.unsplash.com/photo-1608748010899-18f300247112?auto=format&fit=crop&w=800&q=80", // 66. Silk Block-Print Scarf
"https://images.unsplash.com/photo-1553062407-98eeb64c6a62?auto=format&fit=crop&w=800&q=80", // 67. Durable Canvas Backpack
"https://images.unsplash.com/photo-1638247025967-b4e38f787b76?auto=format&fit=crop&w=800&q=80", // 68. Classic Leather Chelsea Boots
"https://images.unsplash.com/photo-1525966222134-fcfa99b8ae77?auto=format&fit=crop&w=800&q=80", // 69. Canvas Low-Top Sneakers
"https://images.unsplash.com/photo-1511499767150-a48a237f0083?auto=format&fit=crop&w=800&q=80" // 70. Polarized Retro Sunglasses
];
function download(url, dest) {
return new Promise((resolve, reject) => {
const file = fs.createWriteStream(dest);
const client = url.startsWith('https') ? https : http;
client.get(url, (response) => {
if (response.statusCode >= 300 && response.statusCode < 400 && response.headers.location) {
return download(response.headers.location, dest).then(resolve).catch(reject);
}
if (response.statusCode !== 200) {
file.close();
fs.unlink(dest, () => {});
return reject(new Error(`Failed to download ${url}: ${response.statusCode}`));
}
response.pipe(file);
file.on('finish', () => {
file.close(resolve);
});
}).on('error', (err) => {
fs.unlink(dest, () => {});
reject(err);
});
});
}
async function main() {
console.log(`Downloading/populating ${imageUrls.length} clothing product images...`);
for (let i = 0; i < imageUrls.length; i++) {
const num = String(i + 1).padStart(2, '0');
const fileName = `clothing_${num}.jpg`;
const custPath = path.join(customerDir, fileName);
const admPath = path.join(adminDir, fileName);
const apiPath = path.join(apiDir, fileName);
const url = imageUrls[i];
try {
console.log(`Downloading [${i + 1}/70] ${fileName}...`);
await download(url, custPath);
fs.copyFileSync(custPath, admPath);
fs.copyFileSync(custPath, apiPath);
} catch (err) {
console.warn(`Warning downloading ${fileName}: ${err.message}. Creating placeholder fallback.`);
const svgContent = `<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" viewBox="0 0 800 800"><rect width="800" height="800" fill="#f1f5f9"/><text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-family="sans-serif" font-size="32" font-weight="bold" fill="#0052ff">Clothing Item #${num}</text></svg>`;
fs.writeFileSync(custPath.replace('.jpg', '.svg'), svgContent);
fs.writeFileSync(admPath.replace('.jpg', '.svg'), svgContent);
fs.writeFileSync(apiPath.replace('.jpg', '.svg'), svgContent);
}
}
console.log('Successfully populated 70 clothing images across customer-web, admin-web, and api uploads!');
}
main();
|