This commit is contained in:
2026-01-06 03:52:42 +08:00
commit fb541c7d94
1347 changed files with 185508 additions and 0 deletions

203
README.md Normal file
View File

@@ -0,0 +1,203 @@
# 颜色数据提取工具
## 简介
这个工具用于从 `pages-list` 目录下的HTML文件中提取拼豆/像素格子颜色数据并保存为JSON格式。
## 功能
- 自动扫描 `pages-list` 目录下所有的 `像素格子.html` 文件
- 从HTML中提取 `color-name`(颜色名称)和 `color`Hex颜色值
- 按文件夹名称组织数据
- 生成格式化的JSON文件
## 使用方法
### 运行提取脚本
```bash
bun run extract-colors.ts
```
或者:
```bash
bun run extract
```
### 输出文件
提取的数据将保存到 `colors.json` 文件中。
## 数据格式
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读取所有颜色
```javascript
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查找特定颜色
```javascript
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获取特定品牌的颜色
```javascript
import colors from './colors.json';
const cocoColors = colors['COCO - 色号预览291色'];
console.log(`COCO共有 ${cocoColors.length} 个颜色`);
// 获取前5个颜色
console.log('前5个颜色:', cocoColors.slice(0, 5));
```
### 示例4统计颜色分布
```javascript
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