Skip to content

yljzcf/ApiSitePanel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ApiSitePanel

一个面向个人使用的 CLI 小工具,用于抓取并整理自己正在使用的 API 站点模型、分组与计费配置,方便横向对比不同站点的模型可用性与性价比。

这是什么

当前版本提供一个本地运行的命令行入口 main.py 和前端面板 panel/。它会读取你的站点配置,抓取目标站点可访问的模型与分组相关 JSON 数据,清洗成便于继续分析的统一结果文件,并在补充充值/套餐信息后打开本地面板进行筛选和对比。

这个项目适合以下场景:

  • 对比多个 API 站点的模型可用性
  • 整理不同站点的分组、倍率和计费信息
  • 为后续人工比价、筛选和记录提供基础数据

当前版本默认在本机启动静态网页面板,不上传数据,也不提供在线服务。

当前能力

  • 读取项目根 site.json
  • 交互式新增站点配置
  • 调用 script/ 下的抓取与清洗逻辑
  • 输出抓取进度、失败原因与汇总结果
  • 在抓取失败时提示对应 raw/ 目录,允许手动补充 JSON 后重新清洗
  • 引导编辑各站点目录下的 site/<站点名>/topup+plans.json,校验充值/套餐 JSON 格式
  • 启动本地前端服务并自动打开 panel/ 面板
  • 在一轮结束后继续驻留终端,支持继续新增站点或直接回车退出

快速开始

1. 运行环境

  • 推荐 Python:3.12
  • 最低支持版本:Python 3.10

2. 安装依赖

python -m pip install -r requirements.txt

3. 准备配置

复制 site.json.examplesite.json,然后填写你自己有权访问的站点配置。

示例:

[
  {
    "url": "https://api.example.com",
    "name": "example-site",
    "new-api-user": "",
    "token": "",
    "Authorization": ""
  }
]

字段说明:

  • url:站点根地址,必须包含 http://https://
  • name:站点显示名,同时会用于输出目录命名;程序会按 site.json 中的数组顺序依次处理站点
  • new-api-user:可选,目标站点登录态。配置后程序会作为 New-Api-User 请求头发送,用于访问登录后接口。该字段属于敏感信息,不要提交真实值到公开仓库。
  • token:可选,目标站点授权令牌。配置后程序会作为 Authorization: Bearer <token> 请求头发送。该字段属于敏感信息,不要提交真实值到公开仓库。
  • Authorization:可选,完整的 Authorization 请求头值。适用于浏览器 Network 中已经能看到完整鉴权头的站点;当它与 token 同时存在时,程序优先使用完整 Authorization

程序在新增站点时会基于规范化后的 URL 查重,避免写入重复站点。抓取前还会做一次整体检查,输出脱敏后的站点顺序、认证字段类型和 raw 输出目录;如果多个站点会写入同一个输出目录,会在开始抓取前提示。

4. 运行脚本

推荐在终端中运行:

python main.py

Windows 用户如果通过双击或“打开方式”直接启动 main.py,程序结束或遇到错误前会提示按回车关闭窗口,方便查看最后的提示信息。更推荐使用 PowerShell、CMD 或 VS Code 终端运行,这样可以保留完整输出。

程序会依次:

  1. 启动后先选择“爬取数据”或“打开面板”
  2. 选择“爬取数据”时,检查并读取 site.json
  3. 询问是否直接使用现有配置
  4. 在需要时进入交互式新增站点流程
  5. 尝试抓取站点的模型、分组、充值与套餐相关 JSON 数据
  6. 清洗并输出站点汇总结果
  7. 对抓取失败站点说明失败原因,能沿用本地数据时会直接用于面板展示
  8. 尝试自动生成各成功站点的 site/<站点名>/topup+plans.json,如为空或不完整会提示文件路径供后续人工补充,不再反复询问确认
  9. site.json 顺序输出站点任务树,展示接口获得、本地获得与缺失数据后,启动本地服务并自动打开 /panel/
  10. 选择“打开面板”时,直接启动本地服务并打开 /panel/
  11. 本轮结束后提示是否继续新增/抓取站点;选择退出时会在关闭前等待按回车

输出内容

运行后会在项目根生成本地输出目录:

  • site/<站点名>/raw/:抓取得到的原始 JSON
  • site/<站点名>/<站点名>.json:清洗后的结果
  • site/<站点名>/topup+plans.json:充值/套餐信息,供前端计算性价比

其中 pricing.json 是清洗阶段的必需输入;如果站点还存在分组信息,程序会同时读取 user_groups.json 参与整理。meta.json 会记录各类候选端点的 HTTP 状态、是否鉴权失败或权限不足、payload 结构摘要和实际保存的 raw 文件,便于定位接口缺口。

程序会按 site.json 中的站点顺序推进抓取,并在汇总后输出站点任务树,分组展示“全部任务完成”和“缺数据”的站点,以及每个缺数据站点的接口获得、本地获得和缺失数据项。

程序会优先尝试从 raw/topup.jsonraw/plans.json 自动生成 topup+plans.json。如果本地 topup+plans.json 已有内容,程序会以本地文件为准,不用接口结果覆盖;如果目标站点接口不存在、登录态失效、权限不足或返回格式暂不支持,程序会在站点诊断中说明缺少模型、分组、充值或套餐中的哪类信息,并列出已尝试端点和 raw 目录;你可以补充对应 raw JSON,或从自己已授权账号的浏览器开发者工具 Network 中查找更完整的接口与 AuthorizationtokenNew-Api-User 等登录态字段。不要把真实认证值提交到仓库。

每个站点目录下的 topup+plans.json 顶层是单个站点的数组,单条记录只需保留原始业务字段,前端会按规则自动推导倍率:当“会员折扣”为 null 时使用 金额 / 额度;当“会员折扣”有值时先计算 实际额度 = 额度 / 会员折扣,再用 金额 / 实际额度 推导倍率。

示例:

[
  {
    "类型": "充值",
    "套餐名": null,
    "金额": 10,
    "额度": 10,
    "会员折扣": null
  }
]

常见问题

Windows 上窗口一闪而过怎么办?

推荐打开 PowerShell、CMD 或 VS Code 终端后运行 python main.py。如果直接双击 main.py,程序在正常结束、输入流关闭或遇到未处理错误时会提示按回车关闭窗口,便于查看最后输出。

仓库公开范围

此仓库只保留运行脚本所需的最小公开文件:

仓库不包含真实配置、站点抓取数据、充值/套餐数据、工作日志、内部设计文档和历史备份文件。

使用边界与免责声明

本项目仅面向个人使用,仅适用于你本人拥有、正在使用或已获得明确授权访问的 API 站点。

使用本项目时,你需要自行确保:

  • 已获得目标站点的访问授权
  • 遵守目标站点的服务条款、速率限制和使用规则
  • 遵守当地适用法律、数据合规与隐私要求
  • 不将本项目用于未授权抓取、批量滥用或其他违规用途

仓库不提供任何真实凭证、真实站点配置或真实抓取结果。因使用者违反服务条款、授权边界或法律法规所产生的后果,由使用者自行承担。

License

本项目采用 MIT License

About

个人使用的 API 站点模型、分组与计费信息抓取和对比工具 / Personal tool for comparing API site models, groups, and pricing data

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors