AI-Assistants-Library / generate-avatar-list.js
danielrosehill's picture
updated
f6ba329
const fs = require('fs');
const path = require('path');
// Path to the avatar photos directory
const avatarDir = path.join(__dirname, 'images', 'avatar-photos');
// Categories based on filename patterns
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 to determine category based on filename
function determineCategory(filename) {
for (const { pattern, category } of categoryPatterns) {
if (pattern.test(filename.toLowerCase())) {
return category;
}
}
return 'other'; // Default category
}
// Function to generate a display name from filename
function generateDisplayName(filename) {
// Remove extension and replace hyphens with spaces
const name = filename.replace(/\.webp$/, '').replace(/-/g, ' ');
// Capitalize each word
return name.split(' ')
.map(word => word.charAt(0).toUpperCase() + word.slice(1))
.join(' ');
}
// Read all files in the avatar directory
fs.readdir(avatarDir, (err, files) => {
if (err) {
console.error('Error reading avatar directory:', err);
return;
}
// Filter for webp files only
const avatarFiles = files.filter(file => file.endsWith('.webp'));
// Create avatar data array
const avatarData = avatarFiles.map(file => ({
file,
category: determineCategory(file),
name: generateDisplayName(file)
}));
// Write to JSON file
fs.writeFileSync(
path.join(__dirname, 'avatar-list.json'),
JSON.stringify(avatarData, null, 2)
);
console.log(`Generated avatar list with ${avatarData.length} images`);
});