Files
get-colors-from-beans/README.md
2026-01-06 03:52:42 +08:00

4.4 KiB
Raw Permalink Blame History

颜色数据提取工具

简介

这个工具用于从 pages-list 目录下的HTML文件中提取拼豆/像素格子颜色数据并保存为JSON格式。

功能

  • 自动扫描 pages-list 目录下所有的 像素格子.html 文件
  • 从HTML中提取 color-name(颜色名称)和 colorHex颜色值
  • 按文件夹名称组织数据
  • 生成格式化的JSON文件

使用方法

运行提取脚本

bun run extract-colors.ts

或者:

bun run extract

输出文件

提取的数据将保存到 colors.json 文件中。

数据格式

JSON文件的结构如下

{
  "COCO - 色号预览291色": [
    {
      "color-name": "A01",
      "color": "#FFFFFF"
    },
    {
      "color-name": "A02",
      "color": "#FEFCFF"
    }
    ...
  ],
  "DMC十字绣实色 - 色号预览508色": [
    {
      "color-name": "B5200",
      "color": "#FFFFFF"
    },
    ...
  ],
  ...
}

统计信息

  • 颜色集合数量: 31个
  • 总颜色数量: 5888个

包含的颜色品牌

  • COCO系列多种规格291色、120色、144色、168色、192色、221色、24色、48色、72色、96色
  • DMC十字绣实色508色
  • DODO291色
  • Mard系列多种规格291色、120色、144色、221色、24色、264色、48色、72色、96色
  • 优肯174色、221色
  • 卡卡284色
  • 咪小窝290色
  • 小舞291色
  • 柿柿220色
  • 漫漫278色
  • 盼盼289色
  • 童趣120色
  • 黄豆豆291色

在代码中使用

示例1读取所有颜色

import colors from './colors.json';

// 遍历所有颜色集合
Object.entries(colors).forEach(([setName, colorList]) => {
  console.log(`${setName} - 共 ${colorList.length} 个颜色`);
  
  colorList.forEach((color, index) => {
    console.log(`  ${index + 1}. ${color['color-name']}: ${color.color}`);
  });
});

示例2查找特定颜色

import colors from './colors.json';

function findColor(hexColor: string) {
  const results = [];
  
  Object.entries(colors).forEach(([setName, colorList]) => {
    const found = colorList.find(c => c.color === hexColor);
    if (found) {
      results.push({
        brand: setName,
        colorName: found['color-name']
      });
    }
  });
  
  return results;
}

// 查找白色
const whiteColors = findColor('#FFFFFF');
console.log('白色色号:', whiteColors);

示例3获取特定品牌的颜色

import colors from './colors.json';

const cocoColors = colors['COCO - 色号预览291色'];
console.log(`COCO共有 ${cocoColors.length} 个颜色`);

// 获取前5个颜色
console.log('前5个颜色:', cocoColors.slice(0, 5));

示例4统计颜色分布

import colors from './colors.json';

const stats = {
  totalColors: 0,
  totalSets: Object.keys(colors).length,
  largestSet: '',
  largestSize: 0,
  smallestSet: '',
  smallestSize: Infinity
};

Object.entries(colors).forEach(([setName, colorList]) => {
  stats.totalColors += colorList.length;
  
  if (colorList.length > stats.largestSize) {
    stats.largestSize = colorList.length;
    stats.largestSet = setName;
  }
  
  if (colorList.length < stats.smallestSize) {
    stats.smallestSize = colorList.length;
    stats.smallestSet = setName;
  }
});

console.log('统计信息:', stats);

技术细节

  • 运行时: Bun
  • 语言: TypeScript
  • 数据提取方式: 正则表达式解析HTML
  • 输出格式: JSONUTF-8编码

文件说明

  • extract-colors.ts: 主程序文件,负责扫描、解析和保存数据
  • colors.json: 提取后的颜色数据(自动生成)
  • README.md: 本说明文件

注意事项

  1. 确保 pages-list 目录和HTML文件存在
  2. HTML文件的名称必须为 像素格子.html
  3. 颜色数据从HTML的 <li class="color-item"> 元素中提取
  4. 如需重新提取直接运行脚本即可覆盖旧的JSON文件

故障排除

问题运行时找不到HTML文件

解决方案:确保在正确的目录下运行脚本,pages-list 文件夹应该在当前目录。

问题:提取的颜色数量不对

解决方案检查HTML文件的格式是否符合预期特别是 color-name 和 Hex颜色的HTML结构。

问题JSON文件格式错误

解决方案:删除 colors.json 文件,重新运行脚本。

许可证

MIT