菜单

数据源

相关源文件

本页介绍了与 GitHub Readme Stats 集成的外部数据源以及系统中语言数据的维护方式。这些数据源是生成所有卡片类型和可视化效果的基础。有关如何将这些数据渲染成卡片的信息,请参阅 卡片生成系统

数据源概述

GitHub Readme Stats 依赖多个关键数据源来生成动态 SVG 卡片

  1. GitHub API - 用户统计信息、存储库信息和 gist 数据的首要来源
  2. WakaTime API - 专门用于 WakaTime 统计卡片
  3. GitHub Linguist - 编程语言颜色数据的来源

来源:存储库结构分析

GitHub API 集成

GitHub Readme Stats 以 GitHub API 作为其主要数据来源。该系统根据正在生成的卡片提取各种类型的数据

  1. 用户统计信息 - star、提交、PR、issue 和贡献
  2. 存储库信息 - star、forks、issue 和语言数据
  3. 热门语言 - 存储库的语言使用数据
  4. Gist 数据 - 关于 GitHub Gists 的信息

身份验证和速率限制

GitHub API 请求使用个人访问令牌 (PAT) 进行身份验证,以提高速率限制。未经身份验证,GitHub API 的请求限制为每小时 60 次,而经过身份验证的请求则允许每小时 5,000 次请求。

GitHub API 端点

该系统主要与以下 GitHub API 端点进行交互

卡片类型主要 GitHub API 端点检索的数据
统计卡片用户信息、存储库Star、提交、PR、贡献
存储库卡片存储库详情Star、forks、issue、语言
热门语言用户存储库、语言语言使用统计
Gist 卡片Gist 详情Gist 内容、Star、forks

来源:存储库 API 调用分析

WakaTime API 集成

WakaTime 统计卡片依赖 WakaTime API 获取编码活动数据。此集成要求用户拥有 WakaTime 账户并提供其 WakaTime API 密钥。

来源:存储库 WakaTime 集成分析

语言数据管理

GitHub Readme Stats 将编程语言颜色信息保存在一个 JSON 文件中,该文件将语言名称映射到其对应的显示颜色。这些数据来源于 GitHub 的 Linguist 存储库。

语言颜色来源

语言颜色存储在 languageColors.json 中,其中包含编程语言名称到其十六进制颜色代码的映射。此文件用于

  1. 为“热门语言”卡片中的语言名称着色
  2. 在存储库卡片中显示主要语言颜色
  3. 在所有卡片类型中提供一致的语言表示

来源:scripts/generate-langs-json.js1-31 src/common/languageColors.json1-624

语言数据更新流程

语言颜色数据通过自动化流程进行更新

  1. generate-langs-json.js 脚本从 GitHub 的 Linguist 存储库获取最新的语言定义
  2. 它提取每种语言定义中的颜色信息
  3. 该脚本生成一个更新的 languageColors.json 文件,其中包含最新的颜色映射
  4. 此过程通过 GitHub Actions 工作流实现自动化,以保持语言颜色最新

语言更新脚本的相关代码片段演示了其工作原理

来源:scripts/generate-langs-json.js9-30

语言颜色格式

languageColors.json 文件采用简单的键值对结构,其中每个编程语言名称映射到其十六进制颜色代码

此数据用于为显示编程语言信息的卡片提供视觉效果。

来源:src/common/languageColors.json1-624

数据流

下图说明了数据如何从外部源通过系统流向以生成 SVG 卡片

来源:存储库架构分析

有关 GitHub API 集成和使用的特定端点的更多详细信息,请参阅 GitHub API 集成。有关语言数据管理的更多信息,请参阅 语言数据