Skip to content

leezhuuuuu/Repo2JSON

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Repo2JSON

English | 中文

概述

Repo2JSON 是一个基于 Flask 的轻量级 API 服务,旨在将 GitHub 仓库的源代码转换为适合大型语言模型(LLM)理解的 JSON 格式。通过可配置的约束条件(如深度、文件数量和文件大小限制),该工具能够高效地提取仓库的特定部分,而无需克隆整个仓库。Repo2JSON 非常适合需要快速提取和处理代码库内容的开发者。

功能

  • 深度限制:控制目录遍历的深度,直至指定的最大深度。
  • 文件数量限制:跳过超过预定义文件数量的目录。
  • 文件大小限制:忽略超过指定字符数的文件。
  • 许可证排除:可选地从下载中排除 LICENSE 文件。
  • 速率限制处理:自动处理 GitHub API 的速率限制,并提供何时重试的反馈。
  • 二进制文件排除:确保只下载文本文件,排除所有二进制文件。
  • 硬编码令牌支持:如果请求中未提供令牌,可以使用硬编码的 GitHub API 令牌。

技术栈

  • 后端框架Flask
  • HTTP 请求Requests
  • 代理:如果通过环境变量配置,则使用 HTTP/HTTPS 代理。

安装与设置

先决条件

  • Python 3.x
  • Flask
  • Requests
  • 如果需要使用 HTTP/HTTPS 代理,请设置环境变量 HTTP_PROXY

安装

  1. 克隆仓库:

    git clone https://github.com/leezhuuuuu/Repo2JSON.git
    cd Repo2JSON
  2. 安装所需包:

    pip install -r requirements.txt
  3. 如果使用代理,请设置环境变量:

    export HTTP_PROXY="http://your-proxy-url:port"
  4. 运行应用程序:

    python app.py

配置

应用程序使用多个可配置参数来控制其行为:

  • EXCLUDE_LICENSE:设置为 True 以跳过 LICENSE 文件。
  • ENABLE_DEPTH_LIMIT:启用或禁用深度限制。
  • MAX_DEPTH:目录遍历的最大深度。
  • ENABLE_FILE_COUNT_LIMIT:启用或禁用每个目录的文件数量限制。
  • MAX_FILES_PER_DIR:在跳过目录之前允许的最大文件数量。
  • ENABLE_FILE_SIZE_LIMIT:启用或禁用文件大小限制。
  • MAX_FILE_SIZE:在跳过文件之前允许的最大字符数。
  • HARDCODED_TOKEN:硬编码的 GitHub API 令牌,用于在请求中未提供令牌时使用。

获取 GitHub Token

要获取 GitHub Token,请访问 GitHub Tokens Settings 并生成一个新的个人访问令牌。确保为令牌选择 repo 权限,以便能够访问私有仓库和执行仓库相关的操作。

API 端点

POST /repo2json

下载指定 GitHub 仓库的内容,并将其转换为适合 LLM 理解的 JSON 格式。需要在请求体中提供 repo_url,并在 Authorization 头中提供 Bearer 令牌。

请求体

{
  "repo_url": "https://github.com/owner/repo"
}

头部

Authorization: Bearer <your_github_token>

响应

返回一个 JSON 对象,包含文件树结构和符合指定条件的文件内容。

{
  "file_tree": {
    "dir1": {
      "file1.txt": null
    }
  },
  "file_contents": {
    "dir1/file1.txt": "File content here..."
  }
}

错误处理

API 在失败情况下(如无效请求、速率限制超限或内部服务器错误)返回适当的 HTTP 状态码和错误信息。

贡献

欢迎贡献!请随时提交拉取请求或开启问题以讨论任何改进或新功能。

许可证

本项目基于 GNU 许可证。详见 LICENSE 文件。

作者

致谢

GitHub Star History

Star History Chart

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages