Skip to content

Commit 12997dd

Browse files
authored
更新 README.md
1 parent 4a73329 commit 12997dd

1 file changed

Lines changed: 234 additions & 2 deletions

File tree

README.md

Lines changed: 234 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,234 @@
1-
# amll-search
2-
这是一个为 amll-ttml-db 设计的高性能歌词搜索与下载 API 服务,使用 Go 语言实现。
1+
AMLL TTML API 服务器
2+
3+
AMLL TTML API 服务器是为 amll-ttml-db 数据仓库设计的高性能搜索与下载服务端。它提供歌词元数据的快速检索以及对应格式歌词文件的下载功能。
4+
5+
特性
6+
7+
· 快速全文检索:基于预处理文本索引,实现毫秒级响应
8+
· 多平台支持:支持 ncm、qq、am、spotify、raw 五种平台的歌词元数据
9+
· 智能缓存:搜索结果缓存 5 分钟,相同查询直接命中,显著提升响应速度
10+
· 自动同步:定时从 GitHub 拉取最新数据,无需手动干预
11+
· 并行搜索:多平台并发查询,结果合并去重后返回
12+
· 下载 API:支持获取 TTML、LRC、YRC、QRC、LYS 等格式的原始歌词文件(可配置禁用)
13+
· 状态监控:实时查看各平台条目数、上次更新时间、缓存大小等信息
14+
15+
快速开始
16+
17+
环境要求
18+
19+
· Go 1.16 或更高版本
20+
21+
安装与运行
22+
23+
```bash
24+
# 克隆仓库(如果有源码)
25+
git clone https://github.com/yourname/amll-ttml-api.git
26+
cd amll-ttml-api
27+
28+
# 编译
29+
go build -o amll-api main.go
30+
31+
# 运行
32+
./amll-api
33+
```
34+
35+
默认会在 43594 端口启动服务,数据目录会自动探测(优先使用当前目录下的 lyric-data,若不存在则从 GitHub 克隆)。
36+
37+
命令行参数
38+
39+
参数 默认值 说明
40+
-no-sync false 禁止 Git 同步,仅使用本地已有数据
41+
-no-download false 禁用 /api/download 接口
42+
-data-dir lyric-data 指定数据目录路径(绝对或相对)
43+
-interval 10m 自动同步间隔,例如 30s、5m、1h
44+
-port 43594 服务监听端口
45+
46+
示例:
47+
48+
```bash
49+
# 使用自定义数据目录,关闭自动同步,端口 8080
50+
./amll-api -data-dir /mnt/data/amll -no-sync -port 8080
51+
```
52+
53+
API 文档
54+
55+
所有接口返回 JSON 格式,并支持跨域请求(CORS)。
56+
57+
基础 URL
58+
59+
```
60+
http://<服务器地址>:<端口>
61+
```
62+
63+
例如:http://localhost:43594
64+
65+
---
66+
67+
1. 状态查询
68+
69+
端点:GET /api/status
70+
返回服务器状态、各平台条目数、上次更新时间等。
71+
72+
响应示例:
73+
74+
```json
75+
{
76+
"status": "active",
77+
"last_update_time": "2025-03-20 15:04:05",
78+
"total_entries": 123456,
79+
"platform_stats": {
80+
"ncm": 50000,
81+
"qq": 40000,
82+
"am": 15000,
83+
"spotify": 10000,
84+
"raw": 8456
85+
},
86+
"repo_url": "https://github.com/Steve-xmh/amll-ttml-db.git",
87+
"cache_size": 128
88+
}
89+
```
90+
91+
---
92+
93+
2. 搜索歌词
94+
95+
端点:GET /api/search 或 POST /api/search
96+
97+
查询参数(GET):
98+
99+
· query:搜索关键词(必填)
100+
· platforms:限定平台,可重复,例如 platforms=ncm&platforms=qq(不传则搜索全部)
101+
102+
请求体(POST):
103+
104+
```json
105+
{
106+
"query": "周杰伦",
107+
"platforms": ["ncm", "qq"]
108+
}
109+
```
110+
111+
响应:
112+
113+
```json
114+
{
115+
"status": "success",
116+
"count": 2,
117+
"results": [
118+
{
119+
"id": "12345",
120+
"rawLyricFile": "七里香.lrc",
121+
"metadata": [["artist", ["周杰伦"]], ["title", ["七里香"]]],
122+
"platforms": ["ncm", "qq"]
123+
}
124+
],
125+
"cached": false
126+
}
127+
```
128+
129+
注意:搜索基于 ID、文件名和元数据文本进行全小写模糊匹配。platforms 字段表示该歌曲在哪些平台存在匹配。
130+
131+
---
132+
133+
3. 下载歌词文件
134+
135+
端点:GET /api/download 或 POST /api/download
136+
137+
如果服务器启动时添加了 -no-download 参数,此接口将返回 403。
138+
139+
参数(GET):
140+
141+
· platform:平台名(如 ncm)
142+
· musicId:歌曲 ID(例如 12345)
143+
· format:文件格式,可选 ttml、lrc、yrc、qrc、lys,默认 ttml
144+
145+
请求体(POST):
146+
147+
```json
148+
{
149+
"platform": "ncm",
150+
"musicId": "12345",
151+
"format": "lrc"
152+
}
153+
```
154+
155+
成功响应:直接返回文件内容(application/octet-stream)。
156+
157+
失败响应(JSON):
158+
159+
```json
160+
{ "error": "Lyric file not found" }
161+
```
162+
163+
---
164+
165+
4. 获取支持的格式列表
166+
167+
端点:GET /api/formats
168+
返回所有可下载的歌词格式。
169+
170+
响应:
171+
172+
```json
173+
["ttml", "lrc", "yrc", "qrc", "lys"]
174+
```
175+
176+
---
177+
178+
5. 手动触发更新
179+
180+
端点:GET /api/update 或 POST /api/update
181+
182+
如果启用了 -no-sync,此接口返回 403。
183+
184+
执行 git pull 并重新加载索引。
185+
响应:
186+
187+
```json
188+
{ "message": "Update successful and metadata reloaded" }
189+
```
190+
191+
192+
193+
```json
194+
{ "message": "Already up to date" }
195+
```
196+
197+
缓存机制
198+
199+
· 查询缓存:相同关键词的搜索结果会缓存 5 分钟,减少重复计算。
200+
· 缓存大小限制:超过 1000 条时会自动清理过期条目。
201+
· 数据更新后:自动清空缓存,确保搜索使用最新数据。
202+
203+
数据目录结构
204+
205+
服务会按以下优先级查找数据目录:
206+
207+
1. 命令行 -data-dir 指定的路径
208+
2. 当前工作目录
209+
3. 上级目录
210+
4. 子目录 lyric-data、amll-ttml-db、data
211+
212+
数据目录应包含类似如下的子目录:
213+
214+
```
215+
lyric-data/
216+
├── ncm-lyrics/
217+
│ ├── index.jsonl
218+
│ └── 歌曲ID.ttml
219+
├── qq-lyrics/
220+
├── am-lyrics/
221+
├── spotify-lyrics/
222+
└── metadata/
223+
└── raw-lyrics-index.jsonl
224+
```
225+
226+
贡献
227+
228+
欢迎提交 Issue 或 Pull Request。
229+
本项目旨在为 AMLL 社区提供便捷的歌词搜索服务,感谢 Steve-xmh 维护的数据仓库。
230+
231+
许可证
232+
233+
本项目采用 MIT 许可证。
234+
你可以自由使用、修改和分发本软件,但需保留版权声明和许可声明。详细条款请参见项目根目录下的 LICENSE 文件。

0 commit comments

Comments
 (0)