mirror of
https://github.com/ZZZure/ZZZ-Plugin.git
synced 2025-12-16 21:27:47 +00:00
163 lines
5.2 KiB
JavaScript
163 lines
5.2 KiB
JavaScript
import fs from 'fs';
|
|
import {
|
|
getRoleImage,
|
|
getRoleCircleImage,
|
|
getSmallSquareAvatar,
|
|
getSquareAvatar,
|
|
getSuitImage,
|
|
getWeaponImage,
|
|
getHakushCharacter,
|
|
getHakushWeapon,
|
|
} from '../../lib/download.js';
|
|
import { char } from '../../lib/convert.js';
|
|
import { getAllSuitID } from '../../lib/convert/equip.js';
|
|
import { getAllWeaponID } from '../../lib/convert/weapon.js';
|
|
import * as LocalURI from '../../lib/download/const.js';
|
|
|
|
export async function downloadAll() {
|
|
if (!this.e.isMaster) return false;
|
|
const charIDs = char.getAllCharactersID();
|
|
const equipSprites = getAllSuitID();
|
|
const weaponSprites = getAllWeaponID();
|
|
const result = {
|
|
images: {
|
|
char: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: charIDs.length,
|
|
},
|
|
charSmallSquare: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: charIDs.length,
|
|
},
|
|
charCircle: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: charIDs.length,
|
|
},
|
|
charSquare: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: charIDs.length,
|
|
},
|
|
equip: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: equipSprites.length,
|
|
},
|
|
weapon: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: weaponSprites.length,
|
|
},
|
|
},
|
|
hakush: {
|
|
char: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: charIDs.length,
|
|
},
|
|
equip: {
|
|
success: 0,
|
|
failed: 0,
|
|
total: equipSprites.length,
|
|
},
|
|
},
|
|
};
|
|
await this.reply(
|
|
'开始下载资源,注意,仅支持下载面板的角色图、武器图、套装图,以及角色卡片的角色头像图。暂不支持下载邦布头像。',
|
|
false,
|
|
{ at: true, recallMsg: 100 }
|
|
);
|
|
for (const id of charIDs) {
|
|
try {
|
|
await getSquareAvatar(id);
|
|
result.images.charSquare.success++;
|
|
} catch (error) {
|
|
logger.error('getSquareAvatar', id, error);
|
|
result.images.charSquare.failed++;
|
|
}
|
|
try {
|
|
await getSmallSquareAvatar(id);
|
|
result.images.charSmallSquare.success++;
|
|
} catch (error) {
|
|
logger.error('getSmallSquareAvatar', id, error);
|
|
result.images.charSmallSquare.failed++;
|
|
}
|
|
try {
|
|
await getRoleImage(id);
|
|
result.images.char.success++;
|
|
} catch (error) {
|
|
logger.error('getRoleImage', id, error);
|
|
result.images.char.failed++;
|
|
}
|
|
try {
|
|
await getRoleCircleImage(id);
|
|
result.images.charCircle.success++;
|
|
} catch (error) {
|
|
logger.error('getRoleCircleImage', id, error);
|
|
result.images.charCircle.failed++;
|
|
}
|
|
try {
|
|
await getHakushCharacter(id);
|
|
result.hakush.char.success++;
|
|
} catch (error) {
|
|
logger.error('getHakushCharacter', id, error);
|
|
result.hakush.char.failed++;
|
|
}
|
|
}
|
|
for (const sprite of equipSprites) {
|
|
try {
|
|
await getSuitImage(sprite);
|
|
result.images.equip.success++;
|
|
} catch (error) {
|
|
logger.error('getSuitImage', sprite, error);
|
|
result.images.equip.failed++;
|
|
}
|
|
}
|
|
for (const sprite of weaponSprites) {
|
|
try {
|
|
await getWeaponImage(sprite);
|
|
result.images.weapon.success++;
|
|
} catch (error) {
|
|
logger.error('getWeaponImage', sprite, error);
|
|
result.images.weapon.failed++;
|
|
}
|
|
try {
|
|
await getHakushWeapon(sprite);
|
|
result.hakush.equip.success++;
|
|
} catch (error) {
|
|
logger.error('getHakushWeapon', sprite, error);
|
|
result.hakush.equip.failed++;
|
|
}
|
|
}
|
|
const messages = [
|
|
'资源下载完成(成功的包含先前下载的资源)',
|
|
`角色图需下载${charIDs.length}张,成功${result.images.char.success}张,失败${result.images.char.failed}张`,
|
|
`角色头像图需下载${charIDs.length}张,成功${result.images.charSquare.success}张,失败${result.images.charSquare.failed}张`,
|
|
`角色圆形图需下载${charIDs.length}张,成功${result.images.charCircle.success}张,失败${result.images.charCircle.failed}张`,
|
|
`角色头像图(练度统计)需下载${charIDs.length}张,成功${result.images.charSmallSquare.success}张,失败${result.images.charSmallSquare.failed}张`,
|
|
`驱动盘套装图需下载${equipSprites.length}张,成功${result.images.equip.success}张,失败${result.images.equip.failed}张`,
|
|
`武器图需下载${weaponSprites.length}张,成功${result.images.weapon.success}张,失败${result.images.weapon.failed}张`,
|
|
`Hakush角色数据需下载${charIDs.length}个,成功${result.hakush.char.success}张,失败${result.hakush.char.failed}个`,
|
|
`Hakush驱动盘数据需下载${equipSprites.length}个,成功${result.hakush.equip.success}张,失败${result.hakush.equip.failed}个`,
|
|
];
|
|
await this.reply(messages.join('\n'));
|
|
}
|
|
export async function deleteAll() {
|
|
if (!this.e.isMaster) return false;
|
|
await this.reply(
|
|
'【注意】正在删除所有资源图片,后续使用需要重新下载!',
|
|
false,
|
|
{ at: true, recallMsg: 100 }
|
|
);
|
|
// 将 localURI 值迭代删除
|
|
for (const dir of Object.values(LocalURI)) {
|
|
logger.debug(`删除文件夹:${dir}`);
|
|
if (fs.existsSync(dir)) {
|
|
fs.rmSync(dir, { recursive: true });
|
|
}
|
|
}
|
|
await this.reply('资源图片已删除!', false, { at: true, recallMsg: 100 });
|
|
}
|