DIEM-API
DIEM-API copied to clipboard
☕ 自制的 API
= DIEM API WincerChan
image:https://img.shields.io/circleci/project/github/WincerChan/Meme-generator.svg?style=flat-square[CircleCI, link=https://circleci.com/gh/WincerChan/Hitokoto/tree/master] image:https://img.shields.io/badge/License-GPL%20v3-blue.svg?style=flat-square[License: GPL v3, https://www.gnu.org/licenses/gpl-3.0] image:https://img.shields.io/github/languages/code-size/WincerChan/Hitokoto.svg?style=flat-square[GitHub code size in bytes]
目前系统有如下 API:
. 一言(Hitokoto) . 网易云音乐(Cloudmusic) . Google 分析(Google Analytics)(这条并没有什么卵用 . 博客搜索的 API(仅作流量转发和字段验证)
有关这些 API 的具体信息请移步至 https://api.itswincer.com[API 的文档](文档包含展示及测试模块,GitHub 无法展示)。
== 部署
以下依赖都是编译时依赖,并非是运行时的依赖:
. Elixir (限流模块使用,二者使用 Unix Domain Socket 通信,可以通过配置文件 [rate-limit] 的 enable 字段禁用掉) . Rust(博客的搜索 API,基于 Tantivy)
如果只想部署 Hitokoto 这一特定 API,则这两个依赖都不需要。
=== 运行参数
支持仅运行某一个 API 服务。比如想只运行 Hitokoto 服务:
[source,sh]
./DIEM-API -view=hitokoto
在运行 Hitokoto 服务之前,记得使用如下参数来初始化数据库:
[source,sh]
./DIEM-API -migrate
数据库的配置路径以及 Hitokoto 源文件的配置路径在配置文件的 [hitokoto] 字段。其中源文件的每一行格式是包含以下元素的五元组(不同列之间采用制表符分割):
|=== | | id | origin | length | source | hitokoto
| 释义 |一言的主键,整数 | 可随意填写 |一言主体长度,整数 | 一言的出处 | 一言主体
| 举例 | 1271737837318521026 | ohx | 16 | 小王子 | 我太年轻了,甚至不懂怎么去爱她。 |===
避免侵权,我不会将接口目前使用的一言数据库源文件公开,如果有需要,可以使用 https://github.com/hitokoto-osc/sentences-bundle[hitokoto.cn 开源的句子],或者使用我之前写的 https://github.com/WincerChan/Hitokoto-Spider[一言爬虫] 来爬取,聪明如你肯定知道如何把 JSON 格式转化成对应的五元组~
=== 普通部署
clone 本仓库并在 diem.toml 修改相关的信息。
[source,sh]
go build -o server # <1> ./server -config diem.toml -migrate # <2> env GIN_MODE=release ./server -config diem.toml # <3>
<1> 编译成二进制 <2> 创建 Hitokoto 的数据库(基于 Bolt) <3> 生产环境(即设置环境变量 GIN_MODE 为 release)
其中生产环境不会在终端打印日志,而是会把日志都记录在 _log 文件夹内。
=== 容器版部署(推荐)
由于默认采用 Unix Domain Socket 作为通信方式,如果想在 K8s 或者 Docker 或者跨机器部署的话,需要将配置文件里面的 network 的字段值改为 tcp。
== 致谢
image:jetbrains-variant-4.png[jetbrains, link=https://www.jetbrains.com/?from=DIEM-API,width=160,height=90]