in scripts/contributor.js [115:153]
async function saveAvatars(type) {
const dataType = TeamJson.find((item) => item.type === type);
const users = dataType.users;
for (const user of users) {
try {
const avatarUrl = user.avatar;
const response = await fetch(avatarUrl);
if (!response.ok) {
throw new Error(`Failed to fetch ${avatarUrl}: ${response.statusText}`);
}
const contentType = response.headers.get('content-type');
// According to Content-Type to get extension
const extension = getExtensionFromMimeType(contentType);
const avatarName = `${user.name}.${extension}`;
const savePath = path.join(teamAvatarDir, avatarName);
const arrayBuffer = await response.arrayBuffer();
const buffer = Buffer.from(arrayBuffer);
fs.writeFileSync(savePath, buffer);
// 更新 avatar2 字段为相对路径
user.avatar_local = `/img/team/${avatarName}`;
console.log(`Saved avatar for ${user.name} to ${savePath}`);
} catch (error) {
console.error(`Failed to save avatar for ${user.name}:`, error.message);
}
}
TeamJson = TeamJson.map((item) => {
if (item.type === type) {
return {
...item,
users,
};
}
return item;
});
fs.writeFileSync(outputFile, JSON.stringify(TeamJson, null, 2));
}