为Stream Music音流写的一个基于Go的歌词获取工具。特点
- 有缓存机制(SQLite)
- Go编写,速度嘎嘎快
- 自动翻译,双语歌词
- 多来源聚合:网易云音乐、QQ音乐(官方 QRC 逐词接口)、酷狗音乐(KRC 逐词接口)
- 返回逐词歌词的罗马音(
romaji),并标注歌词来源(source)与类型(type)
| 来源 | source |
接口 | 逐词原始格式 | 凭据 |
|---|---|---|---|---|
| 网易云音乐 | netease |
music.163.com/api/song/lyric(lv/tv/rv) |
LRC | 匿名可用,可选 Cookie |
| QQ音乐 | qqmusic |
u.y.qq.com/cgi-bin/musicu.fcg(GetPlayLyricInfo,QRC)→ 回退 fcg_query_lyric_new.fcg |
QRC(DES 加密) | 匿名可用,可选 Cookie |
| 酷狗音乐 | kugou |
krcs.kugou.com/search + lyrics.kugou.com/download |
KRC(异或+zlib) | 匿名可用 |
QQ 的 QRC 使用其特有的「buggy DES」加密,解密依赖
github.com/jixunmoe-go/qrc。
每个候选包含:id、title、artist、lyrics(原文+中文翻译混合的 LRC)、romaji(罗马音 LRC,可为空)、type(lrc/ttml)、source(来源标识)。
优先级:命令行参数 > 环境变量 / .env > 默认值。
命令行:
--port xxxx- 设定端口为xxxx--pwd xxxxxxx- 设定验证密码为xxxxxxx
环境变量 / .env(二进制直接运行会自动读取同目录 .env):
LRCAPI_PORT- 端口(等价--port)LRCAPI_PWD- 密码(等价--pwd,推荐;PWD仍兼容 docker 旧用法)NETEASE_COOKIE/QQ_COOKIE/KUGOU_COOKIE- 可选,各平台 Cookie- 其它预留:
APPLE_DEVELOPER_TOKEN、APPLE_MEDIA_USER_TOKEN、SPOTIFY_SP_DC、SODA_COOKIE、BILIBILI_COOKIE、YOUTUBE_MUSIC_COOKIE
完整模板见 .env.example,复制为 .env 后填写即可。
演示是没有命中缓存的效果,命中之后更快
感谢zhumao520提醒构建docker镜像
可以使用项目中的Dockerfile自行构建,也可以使用下面的命令来运行
docker run -d --name lrcapi -e PWD=%AUTH_PWD% -p %EXPOSE_PORT%:1111 -v %LOCAL_DATA_PLACE%:/app/assets 0w0w0/lrcapi-go:latest
# e.g
docker run -d --name lrcapi -e PWD=123456 -p 8080:1111 -v /home/stephenzeng/dockerData/lrcAPI:/app/assets 0w0w0/lrcapi-go:latest- 镜像目前
latest和具体版本号两种tag,建议使用latest。 - arm版本的镜像为
0w0w0/lrcapi-go-arm
项目自带 docker-compose.yml,配合 .env 管理凭据:
cp .env.example .env # 按需填写密码 / Cookie
docker compose up -dcompose 通过 env_file: .env 注入全部环境变量,并把 ./data 挂载为 SQLite 持久化目录。arm64 主机把 image 改为 0w0w0/lrcapi-go-arm:latest 即可。
SQLite数据库默认存放在assets/lyrics.db,仍然建议将/app/assets挂载为持久化目录。
可以到action里面去获取最新的二进制版本,也可以去release里面获取稳定的二进制版本
下面是/etc/systemd/system/lrcAPI.service模板
[Unit]
Description = lrcAPI
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
WorkingDirectory = /root/lrcAPI/
ExecStart = /root/lrcAPI/lrcAPI --port 1111 --pwd 123456
Restart = on-failure
[Install]
WantedBy = multi-user.target
之后运行systemctl daemon-reload && systemctl enable --now lrcAPI即可注册为开机启动的服务

