把多家题库统一成一个 API:tikuAdapter 安装与对接完整指南
【免费下载链接】tikuAdapter大学生网课题库接口适配器:将不同的题库整合为一个API接口。项目地址: https://gitcode.com/gh_mirrors/ti/tikuAdapter
tikuAdapter 是一个用 Go 写的题库接口适配器,把多个网课平台的搜题 API 聚合成一个标准接口,附带内置 Web 管理端。适合做自动答题脚本、网课助手或需要对接多家题库的开发者,读完你能在 5 分钟内跑起服务并完成第一次搜题。
核心能力速览
在动手之前,先明确它能替你解决什么:
- 多题库聚合:已内置 icodef、buguake、万能、题库海、爱点、enncy、柠檬等题库,输出统一的标准 JSON 结构,你的程序只需对接一次。
- 自定义题库零代码接入:用几行 YAML 就能声明任意第三方搜题接口,不必写 Go 代码。
- 自建本地题库:上传 Word 题库文件即可自动解析入库,本地命中可补齐外部库的缺口。
- 内置 Web 管理端:题库增删改查、用户管理、搜索日志查看,默认监听 8060 端口。
- 搜索自动落库:每次搜题的结果会记录到数据库,长期运行可沉淀成你自己的私有题库。
五分钟跑起来:从克隆到第一次搜题
获取代码
git clone https://gitcode.com/gh_mirrors/ti/tikuAdapter cd tikuAdapter环境要求 Go 1.21 及以上、Node.js 18 及以上。这里有个关键点:主程序通过go:embed把前端静态文件打进二进制里,所以必须先构建web/前端,否则直接编译失败——这是新手最常卡住的一步。
构建前端并启动服务
bash buildweb.sh go mod download go run ./cmd/adapter-servicebuildweb.sh会把前端产物输出到cmd/adapter-service/dist。成功的标志是控制台出现 gin 监听 0.0.0.0:8060 的日志,浏览器打开 http://localhost:8060 能看到登录页,默认账号 admin,密码 123456。
验证搜题接口
curl -X POST 'http://localhost:8060/adapter-service/search' \ -H 'Content-Type: application/json' \ -d '{"question":"违反安全保障义务责任属于()","type":1}'响应里出现answerKey、answerText字段,说明题库链路已经通了。不传use参数时默认查询所有免费题库。
习惯容器化部署的话,仓库自带的 Dockerfile 可以直接用:docker build -t tiku-adapter .构建后,以docker run -d --name tiku-adapter -p 8060:8060 -v ./data:/app/data tiku-adapter启动,数据库落在挂载的 data 目录里。
config.yaml 里最关键的几项
配置文件放在程序运行目录即可,启动时自动读取,无需命令行指定。下面只讲真正影响行为的几项,统一按"不配会怎样 / 配了能做什么"来说:
database.path:SQLite 文件路径。不配会怎样——默认创建在程序目录下的tiku.db,本地没问题,容器重建就丢了;配了能做什么——建议 Docker 部署时指定data/tiku.db并挂载卷,数据可持久化。
mysql:MySQL 连接 DSN,也可用环境变量SQL_DSN指定。不配会怎样——默认用 SQLite,零外部依赖;配了能做什么——适合多实例共享同一份题库数据的场景。
limit:按 IP 限流,含时间窗口duration与窗口内允许的请求数requests。不配会怎样——默认关闭,个人使用足够;配了能做什么——防止恶意流量打爆题库配额。
api:自定义外部题库。不配会怎样——只有内置题库可用;配了能做什么——每个条目声明url、method、headers、body、answer五个字段,body里用${question}占位符填题,answer用 jsonpath 指向响应中的答案位置,把enable置为 true 即接入。
recordEmptyAnswer:是否记录搜题未命中。不配会怎样——默认 false,只存命中的题;配成 true 后,空答案也入库,方便后期手动整理补题。
最小可用配置示例:
database: path: "data/tiku.db" limit: enable: false recordEmptyAnswer: true目录速查表
| 目录 | 职责 |
|---|---|
cmd/adapter-service/ | 主入口,加载内嵌前端并启动 gin 服务 |
configs/ | 示例配置与配置结构定义 |
internal/search/ | 各题库搜题 API 的实现,新增题库在这里 |
internal/controller/、internal/api/ | 路由定义与接口处理逻辑 |
internal/dao/、internal/entity/ | GORM 生成的数据库访问层 |
pkg/ | JWT、限流、日志等通用工具 |
web/ | Vue 前端管理端源码 |
sql/ | 表结构定义 SQL |
常见卡点与下一步
- 编译报找不到 dist 目录:前端没构建,先执行
bash buildweb.sh再编译主程序。 - 付费题库查不到答案:token 要通过 URL 查询参数传入,例如
?use=wanneng&wannengToken=你的token;不传use只会走免费题库。 - 某题外部库查不到:把对应 Word 题库文件从 Web 端上传,本地库可以兜底。
- 想接入新题库:在
internal/search/里实现统一的 Search 接口,参考现有实现并配测试用例验证即可。
更多细节可以看仓库内的 README,仍有疑问也可以去项目 issue 区向开发者提问。
【免费下载链接】tikuAdapter大学生网课题库接口适配器:将不同的题库整合为一个API接口。项目地址: https://gitcode.com/gh_mirrors/ti/tikuAdapter
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考