Skip to content

Commit 504ab07

Browse files
committed
docs: update readme
1 parent b2dda00 commit 504ab07

File tree

1 file changed

+60
-185
lines changed

1 file changed

+60
-185
lines changed

README.md

Lines changed: 60 additions & 185 deletions
Original file line numberDiff line numberDiff line change
@@ -1,226 +1,101 @@
11
<div align="center">
2-
<img src="docs/dxkuma.png" width="20%">
32

4-
# 迪拉熊 Bot - Derakkuma Bot
3+
<img src="docs/dxkuma.png" width="22%">
4+
5+
# 迪拉熊Bot - Derakkuma Bot
56

67
## 酸橙熊熊 - Limekuma
78

9+
为舞萌DX设计的成绩图片渲染微服务
10+
811
</div>
912

13+
![Static Badge](https://img.shields.io/badge/Ver-LI26.14--A-blue)
14+
![Static Badge](https://img.shields.io/badge/License-AGPLv3-orange)
1015
[![CodeFactor](https://www.codefactor.io/repository/github/derakkumadev/limekuma-printer/badge)](https://www.codefactor.io/repository/github/derakkumadev/limekuma-printer)
1116
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/679c7eab2c8d48af8069da446f5ff8ae)](https://app.codacy.com/gh/DerakkumaDev/limekuma-printer/dashboard?utm_source=gh&utm_medium=referral&utm_content=&utm_campaign=Badge_grade)
12-
[![QQ](https://img.shields.io/badge/2689340931-gray?logo=qq&style=social)](https://qm.qq.com/cgi-bin/qm/qr?k=LyQOTRI7ViXYSTg0zbS2sGgcmkbYrxbP)
17+
[![QQ](https://img.shields.io/badge/Bot-迪拉熊-grey?style=social&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMTIuODIgMTMwLjg5Ij48ZyBkYXRhLW5hbWU9IuWbvuWxgiAyIj48ZyBkYXRhLW5hbWU9IuWbvuWxgiAxIj48cGF0aCBkPSJNNTUuNjMgMTMwLjhjLTcgMC0xMy45LjA4LTIwLjg2IDAtMTkuMTUtLjI1LTMxLjcxLTExLjQtMzQuMjItMzAuMy00LjA3LTMwLjY2IDE0LjkzLTU5LjIgNDQuODMtNjYuNjQgMi0uNTEgNS4yMS0uMzEgNS4yMS0xLjYzIDAtMi4xMy4xNC0yLjEzLjE0LTUuNTcgMC0uODktMS4zLTEuNDYtMi4yMi0yLjMxLTYuNzMtNi4yMy03LjY3LTEzLjQxLTEtMjAuMTggNS40LTUuNTIgMTEuODctNS40IDE3LjgtLjU5IDYuNDkgNS4yNiA2LjMxIDEzLjA4LS44NiAyMS0uNjguNzQtMS43OCAxLjYtMS43OCAyLjY3djQuMjFjMCAxLjM1IDIuMiAxLjYyIDQuNzkgMi4zNSAzMS4wOSA4LjY1IDQ4LjE3IDM0LjEzIDQ1IDY2LjM3LTEuNzYgMTguMTUtMTQuNTYgMzAuMjMtMzIuNyAzMC42My04LjAyLjE5LTE2LjA3LS4wMS0yNC4xMy0uMDF6IiBmaWxsPSIjMDI5OWZlIi8+PHBhdGggZD0iTTMxLjQ2IDExOC4zOGMtMTAuNS0uNjktMTYuOC02Ljg2LTE4LjM4LTE3LjI3LTMtMTkuNDIgMi43OC0zNS44NiAxOC40Ni00Ny44MyAxNC4xNi0xMC44IDI5Ljg3LTEyIDQ1LjM4LTMuMTkgMTcuMjUgOS44NCAyNC41OSAyNS44MSAyNCA0NS4yOS0uNDkgMTUuOS04LjQyIDIzLjE0LTI0LjM4IDIzLjUtNi41OS4xNC0xMy4xOSAwLTE5Ljc5IDAiIGZpbGw9IiNmZWZlZmUiLz48cGF0aCBkPSJNNDYuMDUgNzkuNThjLjA5IDUgLjIzIDkuODItNyA5Ljc3LTcuODItLjA2LTYuMS01LjY5LTYuMjQtMTAuMTktLjE1LTQuODItLjczLTEwIDYuNzMtOS44NHM2LjM3IDUuNTUgNi41MSAxMC4yNnoiIGZpbGw9IiMxMDlmZmUiLz48cGF0aCBkPSJNODAuMjcgNzkuMjdjLS41MyAzLjkxIDEuNzUgOS42NC01Ljg4IDEwLTcuNDcuMzctNi44MS00LjgyLTYuNjEtOS41LjItNC4zMi0xLjgzLTEwIDUuNzgtMTAuNDJzNi41OSA0Ljg5IDYuNzEgOS45MnoiIGZpbGw9IiMwODljZmUiLz48L2c+PC9nPjwvc3ZnPg==)](https://qun.qq.com/qunpro/robot/qunshare?robot_appid=102613765&robot_uin=3889525249)
18+
[![QQ](https://img.shields.io/badge/Bot-迪拉熊-gray?logo=qq&style=social)](https://qm.qq.com/cgi-bin/qm/qr?k=LyQOTRI7ViXYSTg0zbS2sGgcmkbYrxbP)
19+
[![QQ](https://img.shields.io/badge/Group-迪拉熊开发者交流群-gray?logo=qq&style=social)](https://qm.qq.com/cgi-bin/qm/qr?k=g-3hU7eFmvcFUuCKdCE-3COu8Ej9LfnD&jump_from=webapi&authKey=IpqRZXflOY9UKkYPn0Ho2RrVBw+UF2pfTZk6WnhU39idA4AyJt65nAwfuPfn1yZ+)
1320

1421
## 📖 项目简介
1522

16-
酸橙熊熊(青柠熊熊)是一个舞萌 DX 数据渲染服务,提供高性能的图像生成和数据处理能力。项目基于 .NET 构建,采用 gRPC 协议提供高效的远程过程调用服务。
17-
18-
## ✨ 主要特性
19-
20-
- 🎯 **多数据源支持**: 同时支持落雪和水鱼数据源
21-
- 🎨 **高质量渲染**: 基于 SixLabors.ImageSharp 的高性能图像渲染引擎
22-
- 📊 **数据统计**: 提供 Best 50、歌曲列表等多种数据展示
23-
- 🔄 **实时处理**: 支持流式图像数据传输
24-
- 🎭 **动画支持**: 可生成动画效果的 Best 50 图片
25-
- 🎮 **游戏集成**: 专为舞萌 DX 游戏设计的数据处理
26-
27-
## 🏗️ 技术架构
28-
29-
### 核心技术栈
30-
31-
- **运行时**: .NET
32-
- **通信协议**: gRPC
33-
- **图像处理**: SixLabors.ImageSharp.Drawing
34-
- **字体渲染**: SixLabors.Fonts
35-
- **表达式引擎**: NCalc
36-
- **模板引擎**: SmartFormat
37-
38-
### 项目结构
39-
40-
```
41-
Limekuma/
42-
├── src/ # 源代码目录
43-
│ ├── Prober/ # 数据探针模块
44-
│ │ ├── Common/ # 通用数据模型
45-
│ │ ├── DivingFish/ # 水鱼数据源
46-
│ │ └── Lxns/ # 落雪数据源
47-
│ ├── Render/ # 渲染引擎
48-
│ │ ├── ExpressionEngine/ # 表达式引擎
49-
│ │ ├── Nodes/ # 渲染节点
50-
│ │ └── XmlSceneLoader.cs # XML场景加载器
51-
│ ├── Services/ # gRPC服务实现
52-
│ │ ├── BestsService.cs # Best 50服务
53-
│ │ ├── ListService.cs # 列表服务
54-
│ │ └── ...
55-
│ ├── Utils/ # 工具类
56-
│ ├── Protos/ # Protocol Buffers定义
57-
│ └── Resources/ # 资源文件
58-
├── docs/ # 文档资源
59-
└── .github/ # GitHub工作流
60-
```
61-
62-
## 🚀 快速开始
63-
64-
### 环境要求
65-
66-
- .NET 10.0 SDK
67-
- 支持 HTTP/2 的客户端
68-
69-
### 安装与运行
23+
酸橙熊熊(青柠熊熊)是一个高性能图片生成后端服务。主要用于接入舞萌DX的查分器数据,为玩家的游玩成绩(如B50、成绩列表等)生成精美的图片,常作为机器人(如迪拉熊Bot)的后端渲染引擎。
7024

71-
1. **克隆项目**
25+
本项目通过纯托管图形库ImageSharp实现了脱离原生环境依赖的图形渲染,并内置了基于XML的灵活布局引擎,能够动态渲染丰富多样的玩家成绩卡片。
7226

73-
```bash
74-
git clone https://github.com/DerakkumaDev/limekuma-printer.git
75-
cd limekuma-printer
76-
```
27+
## 📚 项目文档
7728

78-
2. **恢复依赖**
29+
关于酸橙熊熊的详细介绍、架构设计以及协作者接入指南,请参阅我们的[官方文档](https://dxkuma.srcz.one/collaborator-guide/limekuma-intro.html)
7930

80-
```bash
81-
dotnet restore
82-
```
31+
## ✨ 核心特性
8332

84-
3. **运行服务**
85-
```bash
86-
dotnet run --project src/Limekuma.csproj
87-
```
33+
- 🚀 **高性能渲染**:基于ImageSharp,无需依赖本地系统GDI或libgdiplus,跨平台支持好。
34+
- 📊 **多数据源支持**:
35+
- 原生支持[落雪咖啡屋 (Lxns)](https://maimai.lxns.net)查分器API
36+
- 原生支持[水鱼 (Diving-Fish)](https://www.diving-fish.com/maimaidx/prober/)查分器API
37+
- 🖼️ **丰富的图像生成接口**:
38+
- **BestsApi**:生成玩家B50成绩图,支持段位、等级、头像细分及动图组合。
39+
- **ListApi**:生成玩家特定等级谱面的成绩列表图。
40+
- 🔧 **自定义布局引擎**:渲染逻辑与布局分离,基于XML节点定义的灵活布局系统。
41+
- 📡 **流式gRPC通信**:基于Protobuf定义,提供流式的图片字节序列返回,降低大图片传输的内存占用。
8842

89-
### 服务端点
43+
## 🛠️ 技术栈
9044

91-
服务默认运行在 HTTP/2 端口,支持以下 gRPC 服务:
45+
- **核心框架**:.NET
46+
- **通信协议**:gRPC
47+
- **图像处理**:ImageSharp
48+
- **表达式引擎**:NCalc
49+
- **模板引擎**:SmartFormat
50+
- **配置管理**:Hocon
9251

93-
#### BestsApi 服务
52+
## 📦 快速开始
9453

95-
- `GetFromLxns`: 从落雪获取 Best 50
96-
- `GetAnimeFromLxns`: 从落雪获取动画版 Best 50
97-
- `GetFromLxnsWithLevelSeg`: 从落雪获取带等级建议的 Best 50
98-
- `GetFromDivingFish`: 从水鱼获取 Best 50
99-
- `GetAnimeFromDivingFish`: 从水鱼获取动画版 Best 50
100-
- `GetFromDivingFishWithLevelSeg`: 从水鱼获取带等级建议的 Best 50
54+
### 1. 环境要求
10155

102-
#### ListApi 服务
56+
- [.NET 10.0 SDK](https://dotnet.microsoft.com/download/dotnet/10.0)
10357

104-
- `GetFromLxns`: 从落雪获取达成表
105-
- `GetFromDivingFish`: 从水鱼获取达成表
58+
### 2. 获取源码
10659

107-
## 📊 API 使用示例
108-
109-
### gRPC 客户端调用
110-
111-
```csharp
112-
// 创建gRPC客户端
113-
var channel = GrpcChannel.ForAddress("https://localhost:5001");
114-
var client = new BestsApi.BestsApiClient(channel);
60+
```bash
61+
git clone <your-repo-url>/limekuma-printer.git
62+
cd limekuma-printer
63+
```
11564

116-
// 请求落雪Best 50数据
117-
var request = new LxnsBestsRequest
118-
{
119-
DevToken = "your_dev_token",
120-
Qq = 123456789,
121-
PersonalToken = "your_personal_token"
122-
};
65+
### 3. 安装依赖
12366

124-
using var call = client.GetFromLxns(request);
125-
await foreach (var imageResponse in call.ResponseStream.ReadAllAsync())
126-
{
127-
// 处理图像数据
128-
var imageData = imageResponse.Data;
129-
}
67+
```bash
68+
dotnet restore
13069
```
13170

132-
## 🎨 渲染系统
133-
134-
### XML 场景描述
135-
136-
项目使用自定义的 XML 格式描述渲染场景:
137-
138-
```xml
139-
<Canvas width="1200" height="1600" background="#FFFFFFFF">
140-
<Layer opacity="1">
141-
<Positioned x="100" y="100">
142-
<Text value="玩家Best 50" fontFamily="NotoSans" fontSize="24" color="#000000"/>
143-
</Positioned>
144-
<For items="records" var="record" indexVar="i">
145-
<Positioned x="{100 + (i % 5) * 120}" y="{200 + (i / 5) * 120}">
146-
<Image namespace="Jacket" id="{record.JacketId}"/>
147-
</Positioned>
148-
</For>
149-
</Layer>
150-
</Canvas>
151-
```
71+
### 4. 运行项目
15272

153-
### 支持的节点类型
154-
155-
- `Canvas`: 画布容器
156-
- `Layer`: 图层(支持透明度)
157-
- `Positioned`: 定位容器
158-
- `Image`: 图像节点
159-
- `Text`: 文本节点
160-
- `Stack`: 堆叠布局
161-
- `If`: 条件渲染
162-
- `For`: 循环渲染
163-
164-
## 🔧 配置说明
165-
166-
### appsettings.json
167-
168-
```json
169-
{
170-
"Logging": {
171-
"LogLevel": {
172-
"Default": "Information",
173-
"Microsoft.AspNetCore": "Warning"
174-
}
175-
},
176-
"AllowedHosts": "*",
177-
"Kestrel": {
178-
"EndpointDefaults": {
179-
"Protocols": "Http2"
180-
}
181-
}
182-
}
73+
```bash
74+
dotnet run --project src/Limekuma.csproj
18375
```
18476

185-
## 📈 性能优化
77+
项目启动后,将通过配置中指定的端口提供gRPC服务。
18678

187-
- **内存管理**: 使用 ImageSharp 的高效内存处理
188-
- **并行处理**: 支持异步并行图像处理
189-
- **资源缓存**: 智能资源缓存机制
190-
- **流式传输**: 支持分块流式图像传输
79+
## 📜 接口定义
19180

192-
## 🤝 贡献指南
81+
API接口均定义在[`src/Protos/kumabot.proto`](src/Protos/kumabot.proto)文件中。
19382

194-
1. Fork 本项目
195-
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
196-
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
197-
4. 推送到分支 (`git push origin feature/AmazingFeature`)
198-
5. 开启 Pull request
83+
### 支持的RPC方法
19984

200-
## 📄 许可证
85+
- **BestsApi**
86+
- `GetFromLxns` / `GetFromDivingFish`:获取常规B50图片。
87+
- `GetAnimeFromLxns` / `GetAnimeFromDivingFish`:获取包含动画版B50图片。
88+
- `GetFromLxnsWithLevelSeg` / `GetFromDivingFishWithLevelSeg`:获取带等级建议的B50图片。
89+
- **ListApi**
90+
- `GetFromLxns` / `GetFromDivingFish`:获取指定等级或页码的玩家成绩列表图片。
20191

202-
本项目采用 GNU Affero General Public License v3.0 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情。
92+
## 📄 开源协议
93+
94+
本项目基于**GNU Affero General Public License v3.0(AGPL-3.0)**协议开源。详细信息请参阅[LICENSE](LICENSE)文件。
20395

20496
## 🐛 问题反馈
20597

20698
如果您遇到任何问题或有建议,请通过以下方式联系我们:
20799

208-
- 📧 QQ: 2689340931
209-
- 🐛 [源域漏洞追踪系统](https://l.srcz.one/kumabugs)
210-
211-
## 🙏 致谢
212-
213-
感谢以下开源项目的支持:
214-
215-
- [SixLabors.ImageSharp](https://github.com/SixLabors/ImageSharp)
216-
- [Grpc.AspNetCore](https://github.com/grpc/grpc-dotnet)
217-
- [NCalc](https://github.com/ncalc/ncalc)
218-
- [SmartFormat](https://github.com/axuno/SmartFormat)
219-
220-
---
221-
222-
<div align="center">
223-
224-
**让音游数据渲染更简单** · **Powered by .NET**
225-
226-
</div>
100+
- 📧 [迪拉熊开发者交流群](https://qm.qq.com/cgi-bin/qm/qr?k=g-3hU7eFmvcFUuCKdCE-3COu8Ej9LfnD&jump_from=webapi&authKey=IpqRZXflOY9UKkYPn0Ho2RrVBw+UF2pfTZk6WnhU39idA4AyJt65nAwfuPfn1yZ+)
101+
- 🐛 [Codeberg](https://codeberg.org/Derakkuma/dxkuma-bot)

0 commit comments

Comments
 (0)