DIEM-API icon indicating copy to clipboard operation
DIEM-API copied to clipboard

☕ 自制的 API

trafficstars

= 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]