fill-imgs.js 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. const fs = require('fs');
  2. const path = require('path');
  3. const baseDir = path.join(__dirname, '..', 'public', 'images', '500');
  4. const constantsPath = path.join(__dirname, '..', 'src', 'pages', 'A2main', 'components', 'sceneHotlist', 'constants.ts');
  5. const backupPath = constantsPath + '.bak';
  6. function normalize(name) {
  7. return name.replace(/\s+/g, '').replace(/[“”"'。,、()()《》<>::\[\]【】\-–—,\.·']/g, '').toLowerCase();
  8. }
  9. function findBestFolder(name, folders) {
  10. const n = normalize(name);
  11. for (const f of folders) {
  12. if (normalize(f).includes(n) || n.includes(normalize(f))) return f;
  13. }
  14. for (const f of folders) {
  15. const fn = normalize(f);
  16. if (fn && n.split('').slice(0,6).every(ch => fn.includes(ch))) return f;
  17. }
  18. return null;
  19. }
  20. function main() {
  21. const folders = fs.readdirSync(baseDir, { withFileTypes: true })
  22. .filter(d => d.isDirectory())
  23. .map(d => d.name);
  24. let content = fs.readFileSync(constantsPath, 'utf8');
  25. fs.writeFileSync(backupPath, content, 'utf8');
  26. const tmp = content.replace(/export const ANT_LIST\s*=/, 'module.exports =');
  27. const tmpPath = path.join(__dirname, 'tmp_ant_list.js');
  28. fs.writeFileSync(tmpPath, tmp, 'utf8');
  29. delete require.cache[require.resolve(tmpPath)];
  30. const list = require(tmpPath);
  31. for (const item of list) {
  32. if (!item.name) continue;
  33. if (item.imgName && item.imgName.toString().trim()) continue;
  34. const folder = findBestFolder(item.name, folders);
  35. if (!folder) continue;
  36. const files = fs.readdirSync(path.join(baseDir, folder)).filter(f => /\.(jpe?g|png|webp)$/i.test(f));
  37. if (files.length === 0) continue;
  38. item.imgName = `${folder}/${files[0]}`;
  39. item.imgList = files.slice(0, 2).map(f => `${folder}/${f}`);
  40. }
  41. const out = 'export const ANT_LIST = ' + JSON.stringify(list, null, 2).replace(/"/g, "'") + ';\n';
  42. fs.writeFileSync(constantsPath, out, 'utf8');
  43. console.log('Updated constants.ts (backup at ' + backupPath + ')');
  44. }
  45. main();