Download apps/api/src/scripts/inject-missing-images.ts from safetrack/edtech: direct link, hf CLI and curl.
- Browser
- Download file 1.91 kB
-
https://huggingface.co/spaces/safetrack/edtech/resolve/main/apps/api/src/scripts/inject-missing-images.ts
- Command line
-
hf download hf://spaces/safetrack/edtech/apps/api/src/scripts/inject-missing-images.ts
-
curl -L -o inject-missing-images.ts https://huggingface.co/spaces/safetrack/edtech/resolve/main/apps/api/src/scripts/inject-missing-images.ts
1.91 kB
| import { PrismaClient } from '@prisma/client'; | |
| const prisma = new PrismaClient(); | |
| async function injectMissingImages() { | |
| console.log("🖼️ Starting injection of missing visuals..."); | |
| const tracks = await prisma.track.findMany({ | |
| include: { days: true } | |
| }); | |
| let imagesInjected = 0; | |
| for (const track of tracks) { | |
| // Find sector generic name | |
| const sectorStr = track.title.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, "").replace(/[^a-z0-9]/g, "_"); | |
| let fallbackUrl = `https://r2.xamle.sn/branding/${sectorStr}_generic.png`; | |
| // If it's the core tracks, we might just use a general fallback if sector isn't in title | |
| if (track.id.startsWith("T")) { | |
| fallbackUrl = 'https://r2.xamle.sn/branding/general_generic.png'; | |
| if (track.title.toLowerCase().includes("restauration")) fallbackUrl = 'https://r2.xamle.sn/branding/restauration_generic.png'; | |
| if (track.title.toLowerCase().includes("couture")) fallbackUrl = 'https://r2.xamle.sn/branding/couture_generic.png'; | |
| } else { | |
| fallbackUrl = `https://r2.xamle.sn/branding/${sectorStr}_generic.png`; | |
| } | |
| for (const day of track.days) { | |
| // Specifically fixing days 5, 8, 10 and any other day missing visuals | |
| if (!day.imageUrl && !day.videoUrl) { | |
| await prisma.trackDay.update({ | |
| where: { id: day.id }, | |
| data: { imageUrl: fallbackUrl } | |
| }); | |
| console.log(`✅ Injected generic image for Track ${track.id} Day ${day.dayNumber}`); | |
| imagesInjected++; | |
| } | |
| } | |
| } | |
| console.log(`\n🎉 Injection complete! ${imagesInjected} fallback images added to the database.`); | |
| await prisma.$disconnect(); | |
| } | |
| injectMissingImages().catch(e => { | |
| console.error(e); | |
| process.exit(1); | |
| }); | |