Skip to content

Nitmi/CliProxyAPI-2-Sub2API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

cliProxyAPI 与 sub2api 账号文件互转工具

将 cliProxyAPI 单文件格式与 sub2api 结构化格式进行双向转换的命令行工具。

功能特性

  • 双向转换:cliProxyAPI → sub2api 合并,sub2api → cliProxyAPI 拆分
  • 批量处理:支持批量扫描目录中的所有账号文件
  • 拖拽支持:Windows 下可直接拖拽文件/文件夹到 bat 脚本执行
  • 灵活过滤:支持 include/exclude 通配符模式筛选文件
  • 递归扫描:可选递归处理子目录
  • 自动命名:根据邮箱、文件名或索引自动生成账户名称

两种格式说明

格式 结构 特点
cliProxyAPI 扁平单文件 每个账号一个 JSON 文件,所有字段平铺在顶层
sub2api 结构化多账户 单个 JSON 文件包含多个账户,字段分组存储于 credentialsextra

依赖要求

  • Python 3.10+
  • 无第三方依赖(仅使用标准库)

跨平台支持

平台 脚本类型 文件列表
Windows .bat 批处理 smart_convert.bat, cpa2sub.bat, sub2cpa.bat
macOS .command 脚本 smart_convert.command, cpa2sub.command, sub2cpa.command

使用方法

智能转换(推荐)

将文件或文件夹拖拽到 smart_convert.bat (Windows) 或 smart_convert.command (macOS) 上,脚本会自动识别格式并转换。

支持同时拖拽多个文件/文件夹进行批量转换!

拖入内容 检测格式 转换方向 输出位置
文件夹 cliProxyAPI 多文件 → sub2api 文件夹内 sub2api_accounts_import.json
sub2api JSON 文件 包含 accounts 数组 → cliProxyAPI 文件同目录 cpa_output/
单个 cliProxyAPI 文件 包含 access_token → sub2api 文件同目录 sub2api_accounts_import.json

命令行方式:

# 单个文件/文件夹
python convert_accounts.py auto <文件或文件夹路径>

# 多个文件/文件夹批量处理
python convert_accounts.py auto ./folder1 ./folder2 ./accounts.json

# 指定输出路径(仅单输入时生效)
python convert_accounts.py auto ./accounts -o output.json

# 使用 bat 脚本(支持多文件拖拽)
smart_convert.bat <路径1> [路径2] [路径3] ...

多文件拖拽示例:

  1. 在资源管理器中选中多个文件夹和/或 JSON 文件
  2. 将它们一起拖拽到 smart_convert.bat 图标上
  3. 脚本会逐一处理每个输入,并在最后显示汇总统计

高级用法

拖拽方式

cpa2sub.bat — 将文件夹拖到 bat 上

  1. 准备好包含 cliProxyAPI 账号文件(.json)的文件夹
  2. 将文件夹拖放到 cpa2sub.bat 图标上
  3. 自动在文件夹同级目录生成 sub2api_accounts_import.json

sub2cpa.bat — 将 JSON 文件拖到 bat 上

  1. 准备好 sub2api 格式的 JSON 文件
  2. 将文件拖放到 sub2cpa.bat 图标上
  3. 自动在文件同级目录生成 cpa_output 文件夹,包含拆分后的单账号文件

命令行方式

cpa2sub 子命令

将多个 cliProxyAPI 单文件合并转换为 sub2api 格式。

python convert_accounts.py cpa2sub <输入目录> [选项]

参数说明:

参数 说明 默认值
输入目录 包含 cliProxyAPI JSON 文件的目录 (必填)
-o, --output 输出文件路径 sub2api_accounts.json
--include 文件名通配模式,逗号分隔 *.json
--exclude 排除文件名通配模式,逗号分隔
-r, --recursive 递归扫描子目录
--platform 平台标识 openai
--account-type 账户类型 oauth
--concurrency 并发数 3
--priority 优先级 50
--name-source 账户名称来源:email/filename/index email

示例:

# 基本用法
python convert_accounts.py cpa2sub ./accounts

# 指定输出文件
python convert_accounts.py cpa2sub ./accounts -o output.json

# 递归扫描,排除备份文件
python convert_accounts.py cpa2sub ./accounts -r --exclude "*.bak,*_backup*"

# 使用文件名作为账户名称
python convert_accounts.py cpa2sub ./accounts --name-source filename
sub2cpa 子命令

将 sub2api 格式文件拆分为多个 cliProxyAPI 单文件。

python convert_accounts.py sub2cpa <输入文件> [选项]

参数说明:

参数 说明 默认值
输入文件 sub2api 格式的 JSON 文件 (必填)
-o, --output-dir 输出目录 cpa_accounts
--name-source 输出文件名来源:email/name email

示例:

# 基本用法
python convert_accounts.py sub2cpa accounts.json

# 指定输出目录
python convert_accounts.py sub2cpa accounts.json -o ./output

# 使用账户名称作为文件名
python convert_accounts.py sub2cpa accounts.json --name-source name

字段映射表

核心字段映射(credentials)

cliProxyAPI sub2api 说明
access_token credentials.access_token 访问令牌
id_token credentials.id_token ID 令牌
refresh_token credentials.refresh_token 刷新令牌
account_id credentials.chatgpt_account_id 账户 ID
email credentials.email 邮箱地址
expired credentials.expires_at 过期时间(ISO ↔ Unix 时间戳)

扩展字段(extra)

以下 cliProxyAPI 字段转换时存入 extra 对象:

password, source, type, disabled, mailbox, mail_provider, health_status, backup_written, cpa_sync_status, created_at, last_cpa_sync_at, last_cpa_sync_error, last_probe_at, last_probe_detail, last_probe_result, last_probe_status_code, last_refresh

注意事项

  1. apikey 类型跳过:sub2cpa 转换时,仅处理 type=oauth 的账户,apikey 类型会被跳过
  2. 时间格式转换
    • cpa2sub:expired(ISO 8601)→ expires_at(Unix 时间戳)
    • sub2cpa:expires_at(Unix 时间戳)→ expired(ISO 8601)
  3. 文件名生成规则
    • 邮箱地址中的非法字符(<>:"/\|?*)会被替换为下划线
    • 无邮箱时使用 account_{序号}.json 命名
  4. cpa2sub 默认值:转换后的账户默认设置 concurrency=3priority=50rate_multiplier=1auto_pause_on_expired=true

macOS 使用说明

首次使用设置

macOS 下首次使用需要给脚本添加执行权限:

# 进入脚本目录
cd /path/to/cpa-2-sub2api

# 添加执行权限
chmod +x *.command

拖拽使用方法

macOS 的 .command 脚本支持与 Windows .bat 文件相同的拖拽操作:

  1. smart_convert.command — 智能转换(推荐)

    • 将文件或文件夹拖拽到脚本图标上
    • 支持同时拖拽多个文件/文件夹进行批量转换
    • 自动识别格式并执行相应转换
  2. cpa2sub.command — cliProxyAPI → sub2api

    • 将包含账号文件的文件夹拖拽到脚本上
    • 自动在文件夹同级目录生成 sub2api_accounts_import.json
  3. sub2cpa.command — sub2api → cliProxyAPI

    • 将 sub2api 格式的 JSON 文件拖拽到脚本上
    • 自动在文件同级目录生成 cpa_output 文件夹

命令行使用方法

# 智能转换
./smart_convert.command <路径1> [路径2] [路径3] ...

# cliProxyAPI 转 sub2api
./cpa2sub.command <输入目录> [选项]

# sub2api 转 cliProxyAPI
./sub2cpa.command <输入文件> [选项]

macOS 版增强特性

  • 环境检查:启动时自动检查 Python 3 和 convert_accounts.py 是否存在
  • 彩色输出:使用 ANSI 颜色代码,成功/失败信息更醒目
  • UTF-8 支持:自动设置 LANG=en_US.UTF-8 确保中文正常显示
  • 路径空格处理:完整支持包含空格的文件/文件夹路径

About

cliProxyAPI 与 sub2api 账号文件互转工具。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors