Corgi VIN 解码器
由NHTSA VPIC数据库提供动力.
需要的不只是基本的VIN解码吗? 看看这个 车狗 API 用于综合车辆数据,包括市场价值、安全回顾、所有者费用等.
安装
npm install @cardog/corgi
快速启动
import { createDecoder } from "@cardog/corgi";
const decoder = await createDecoder();
const result = await decoder.decode("KM8K2CAB4PU001140");
console.log(result.components.vehicle);
// { make: 'Hyundai', model: 'Kona', year: 2023, ... }
await decoder.close();
平台支持
节点.js
import { createDecoder } from "@cardog/corgi";
const decoder = await createDecoder();
const result = await decoder.decode("1HGCM82633A123456");
// Custom database path
const decoder = await createDecoder({
databasePath: "/path/to/vpic.lite.db",
});
浏览器
import { createDecoder } from "@cardog/corgi/browser";
const decoder = await createDecoder({
databasePath: "https://corgi.cardog.io/vpic.lite.db.gz",
runtime: "browser",
});
云花板工人(D1)
import { createDecoder, initD1Adapter } from "@cardog/corgi";
initD1Adapter(env.D1_DATABASE);
const decoder = await createDecoder({
databasePath: "D1",
runtime: "cloudflare",
});
配置
const decoder = await createDecoder({
databasePath: "./custom/path.db",
forceFresh: true,
defaultOptions: {
includePatternDetails: true,
includeRawData: false,
confidenceThreshold: 0.8,
includeDiagnostics: true,
},
});
// Per-decode options
const result = await decoder.decode("VIN12345678901234", {
modelYear: 2024,
includePatternDetails: true,
});
反应结构
interface DecodeResult {
vin: string;
valid: boolean;
components: {
vehicle?: {
make: string;
model: string;
year: number;
series?: string;
bodyStyle?: string;
driveType?: string;
fuelType?: string;
doors?: string;
};
wmi?: {
manufacturer: string;
make: string;
country: string;
region: string;
};
plant?: {
country: string;
city?: string;
code: string;
};
engine?: {
model?: string;
cylinders?: string;
displacement?: string;
fuel?: string;
};
modelYear?: {
year: number;
source: string;
confidence: number;
};
checkDigit?: {
isValid: boolean;
expected?: string;
actual: string;
};
};
errors: DecodeError[];
metadata?: DiagnosticInfo;
patterns?: PatternMatch[];
}
处理错误
import { ErrorCode } from "@cardog/corgi";
const result = await decoder.decode("INVALID_VIN");
if (!result.valid) {
result.errors.forEach((error) => {
switch (error.code) {
case ErrorCode.INVALID_CHECK_DIGIT:
case ErrorCode.INVALID_LENGTH:
case ErrorCode.WMI_NOT_FOUND:
console.log(error.message);
}
});
}
国 际
npx @cardog/corgi decode 1HGCM82633A123456
npx @cardog/corgi decode 1HGCM82633A123456 --patterns --format json
npx @cardog/corgi --help
建筑
VIN 结构
车辆识别号码(VIN)是分配给每辆为道路用途而制造的车辆的17个特征标识。 该结构由ISO 3779定义,并遵循此格式:
Position: 1-3 4-8 9 10 11 12-17
WMI VDS Check Year Plant VIS
│ │ │ │ │ │
│ │ │ │ │ └─ Sequential production number
│ │ │ │ └───────── Assembly plant code
│ │ │ └─────────────── Model year (A-Y, 1-9, excluding I,O,Q,U,Z,0)
│ │ └─────────────────────── Check digit (0-9, X)
│ └──────────────────────────────── Vehicle attributes (model, body, engine, etc.)
└─────────────────────────────────────── World Manufacturer Identifier
WMI( 方案 1-3): 确定制造商。 第一个字符表示国家/地区,第二个表示制造商,第三个表示车辆类型或制造部门.
VDS(提案4-8):车辆说明科. 制造商定义的属性包括型号,车体样式,发动机类型,和约束系统等.
检查 Digit( 选项 9):使用加权算法验证VIN完整性. 在北美出售的所有车辆均需购买.
示范年份(方案10):编码了模型年份. 使用字母A-Y(不包括I,O,Q,U,Z)和数字1-9在一个30年周期中.
植物代码(11号):确定组装厂. 制造商专用编码.
VIS(提案12-17):车辆识别仪科. 系列生产编号在模型年份和厂内独有.
检查数字算法
支票数字(位置9)的计算方法是:
- 指定每个字符一个值(A=1,B=2,.,N=5,P=7,.,0-9=面值)
- 以重量乘以每个位置:
[8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2] - 总结所有产品和取用modulo 11
- 结果10="X",否则数字本身
模拟年份解码
每49 CFR 565.15, 每30年示范年代码周期:
| 代码 | 年份 |
|---|---|
| A 类 | 1980, 2010 (英语) |
| 页:1 | 1981, 2011 (英语) |
| . | . |
| 页:1 | 1999年,第2029页 |
| Y | 2000, 2030 (英语) |
| 1个 | 2001, 2031 (英语) |
| . | . |
| 第9条 | 2009, 2039 (英语) |
字符一,O,Q被排除在所有VIN职位之外. U,Z,和0被另外排除在10号位置之外.
数据库
VPIC 列表
Corgi使用NHTSA vPIC(汽车产品信息目录)数据库的优化子集. 数据库被压缩并被捆绑,用于离线操作.
规格:
- 资料来源:NHTSA VPIC
- 格式: SQLite (优化)
- 压缩:~20MB (gzip)
- 未压缩 :~40MB
- 最新情况:每月通过自动化管道
托管数据库
Cardog维持一个公共CDN
基础 URL : https://corgi.cardog.io
| 文件 | 说明 |
|---|---|
vpic.lite.db.gz | 数据库(gzip) |
vpic.lite.db.bz2 | 数据库(bzip2) |
vpic.lite.db.xz | 数据库 (xz) |
vpic.lite.db.zst | 数据库 (zstd) |
vpic.lite.json | 元数据(版本、校验和数、记录计数) |
vpic.lite.sha256 | SHA256 检查和 |
还提供日期档案: vpic_lite_YYYYMMDD.db.gz
本地缓存
- 节点.js数字 :
~/.corgi-cache/vpic.lite.db - 浏览器: 从提供的 URL 装入
- 云雾花由D1管理
import { getDatabasePath } from "@cardog/corgi";
const dbPath = await getDatabasePath();
const decoder = await createDecoder({ forceFresh: true }); // Force refresh
出口
// Core
import { createDecoder, quickDecode, getDatabasePath } from "@cardog/corgi";
// Types
import type { DecodeResult, DecodeOptions, DecoderConfig } from "@cardog/corgi";
// Enums
import { ErrorCode, ErrorCategory, BodyStyle } from "@cardog/corgi";
// Adapters
import { initD1Adapter } from "@cardog/corgi/d1-adapter";
import { createDecoder } from "@cardog/corgi/browser";
车狗 API
Corgi 提供快速的离线VIN解码 - 但是,如果你需要全面的车辆情报 车狗 API 提供更多的:
- 丰富VIN解码 - Corgi 解码加详细变异数据、规格和特征
- 市场分析 - 定价见解、市场趋势和可比车辆清单
- 安全回顾 - NHTSA和Transport Canada召回由VIN检索或制作/模型的数据
- 车辆清单 - 以过滤器搜索活动列表,以了解制作、模型、价格、位置
- EV 数据 - 充电站、效率评级和范围估计
# Decode a VIN with full vehicle data
curl "https://api.cardog.io/v1/vin/1HGCM82633A123456" \
-H "x-api-key: your-api-key"
许可证
ISC 许可证 - 见 自由主义 详细情况.