|
const fs = require('fs'); |
|
const path = require('path'); |
|
|
|
|
|
const avatarDir = path.join(__dirname, 'images', 'avatar-photos'); |
|
|
|
|
|
const categoryPatterns = [ |
|
{ pattern: /android|bot|robot/, category: 'robots' }, |
|
{ pattern: /sloth/, category: 'sloths' }, |
|
{ pattern: /cat|dog|fox|monkey|penguin|koala|animal/, category: 'animals' }, |
|
{ pattern: /icon|cloud|api|vision|words/, category: 'abstract' } |
|
]; |
|
|
|
|
|
function determineCategory(filename) { |
|
for (const { pattern, category } of categoryPatterns) { |
|
if (pattern.test(filename.toLowerCase())) { |
|
return category; |
|
} |
|
} |
|
return 'other'; |
|
} |
|
|
|
|
|
function generateDisplayName(filename) { |
|
|
|
const name = filename.replace(/\.webp$/, '').replace(/-/g, ' '); |
|
|
|
|
|
return name.split(' ') |
|
.map(word => word.charAt(0).toUpperCase() + word.slice(1)) |
|
.join(' '); |
|
} |
|
|
|
|
|
fs.readdir(avatarDir, (err, files) => { |
|
if (err) { |
|
console.error('Error reading avatar directory:', err); |
|
return; |
|
} |
|
|
|
|
|
const avatarFiles = files.filter(file => file.endsWith('.webp')); |
|
|
|
|
|
const avatarData = avatarFiles.map(file => ({ |
|
file, |
|
category: determineCategory(file), |
|
name: generateDisplayName(file) |
|
})); |
|
|
|
|
|
fs.writeFileSync( |
|
path.join(__dirname, 'avatar-list.json'), |
|
JSON.stringify(avatarData, null, 2) |
|
); |
|
|
|
console.log(`Generated avatar list with ${avatarData.length} images`); |
|
}); |