Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/HisAtri/LrcApi
A Flask API For StreamMusic
https://github.com/HisAtri/LrcApi
lyrics music navidrome
Last synced: 2 days ago
JSON representation
A Flask API For StreamMusic
- Host: GitHub
- URL: https://github.com/HisAtri/LrcApi
- Owner: HisAtri
- License: gpl-3.0
- Created: 2023-07-21T01:31:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-07-17T11:52:52.000Z (4 months ago)
- Last Synced: 2024-07-17T15:52:46.389Z (4 months ago)
- Topics: lyrics, music, navidrome
- Language: Python
- Homepage: https://docs.lrc.cx
- Size: 717 KB
- Stars: 258
- Watchers: 3
- Forks: 22
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LrcApi
A Flask API For [StreamMusic](https://github.com/gitbobobo/StreamMusic)
> 欢迎更多的音乐服务接入本API,也欢迎各位前端开发者提出新的API适配需求。
> [JetBrains](https://www.jetbrains.com/) 为本项目提供免费的开源许可证。
## 功能
支持酷狗/聚合API获取LRC歌词
支持text/json API
支持获取音乐/专辑/艺术家封面
默认监听28883端口,API地址 `http://0.0.0.0:28883/lyrics` ;新版API地址 `http://0.0.0.0:28883/jsonapi` ;封面API地址 `http://0.0.0.0:28883/cover` 。
### 启动参数
| 参数 | 类型 | 默认值 |
|----------|-----|-------|
| `--port` | int | 28883 |
| `--auth` | str | |`--auth`参数用于header鉴权,留空则跳过鉴权。验证header中的`Authorization`或`Authentication`字段。如果鉴权不符合,则返回403响应。
也可以使用环境变量`API_AUTH`定义,其优先性低于`--auth`参数,但是更容易在Docker中部署。`-e API_AUTH=自定义一个鉴权key`
## 使用方法
### 公开API
如果无法私有部署,可以先尝试使用公开API。注意:公开API通过酷狗等接口获取歌词,可能响应较慢且并不完全准确。
歌词API地址:`https://api.lrc.cx/lyrics`
封面API地址: `https://api.lrc.cx/cover`
### 二进制文件
上传至运行目录,`./lrcapi --port 8080 --auth 自定义一个鉴权key`
### Python源文件
拉取本项目;或者下载后上传至运行目录,解压tar.gz
安装依赖:`pip install -r requirements.txt`
启动服务:`python3 app.py --port 8080 --auth 自定义一个鉴权key`
### Docker部署方式
```bash
docker run -d \
-p 28883:28883 \
-v /home/user/music:/music \
-e API_AUTH=自定义一个鉴权key \
hisatri/lrcapi:latest
```或者,请指定一个Tag(推荐)
```bash
docker run -d \
-p 28883:28883 \
-v /home/user/music:/music \
-e API_AUTH=自定义一个鉴权key \
hisatri/lrcapi:1.5.2
```一个Docker-compose配置如下
```yaml
services:
lrcapi:
image: hisatri/lrcapi:latest
container_name: lrcapi
ports:
- "28883:28883"
volumes:
- /home/user/music:/music
environment:
- API_AUTH=自定义一个鉴权key
restart: always
```如果你正在使用Navidrome Docker,请将 `/home/user/music:/music` 中的 `/home/user/music` 修改为你在Navidrome中映射的主机路径;
换句话说,`-v` 参数与Navidrome保持一致即可。
如果你正在使用Navidrome,请将你的音乐文件目录映射到Docker内目录;例如如果你音乐存储的目录是`/www/path/music`,请将启动命令中的映射修改为 `/www/path/music:/www/path/music`
然后访问 `http://0.0.0.0:28883/lyrics` 或新版API `http://0.0.0.0:28883/jsonapi`
图片API地址为 `http://0.0.0.0:28883/cover`
注意:图片返回目前采用反向代理策略,可能存在一定的上下行流量消耗和延迟。
支持使用Nginx或Apache进行反向代理与SSL。
## 音乐元数据修改接口
### 接口详情
- 请求方法:POST
- 请求路径:/tag
- 数据类型:application/json### 支持格式
已测试:
- FLAC(flac)
- ID3v2(mp3)
- VorbisComment(ogg)### 支持标签
- 标题:title
- 艺术家:artist
- 专辑:album
- 歌词:lyrics### 状态码
- 200 成功
- 404 未找到文件
- 421 无权限
- 422 解析错误
- 5xx 执行出错### 简易测试环境
```python
import requests
json_data = {
"path": "/path/to/music/file",
"title": "title",
"artist": "artist",
"album": "album",
"lyrics": "lyrics"
}
url = 'http://127.0.0.1:28883/tag'
response = requests.post(url, json=json_data)
print(response.status_code)
print(response.text)
```## 二次开发说明
本程序基于GPL-3.0开源许可证,您可以自由免费地使用、修改和分发本程序。在二次开发时,请遵守以下要求:
1. 在您的衍生作品中保留原始版权和许可声明。
2. 如果您对本程序进行了修改,请清楚地说明您的修改。
3. 在进行分发时,您需要提供完整的源代码,并以GPL-3.0许可证分发您的衍生作品。
4. 任何以本程序为基础的商业用途都需要遵守GPL-3.0许可证,并保持免费开放访问。
5. 除源代码外,本项目的其他部分(包括Logo、服务或标语等)并非由 GPL 3.0 协议开源。请确保您详细了解GPL-3.0许可证的要求并遵守相关规定。
# 赞赏一下
微信
[![Star History Chart](https://api.star-history.com/svg?repos=HisAtri/LrcApi&type=Date)](https://star-history.com/#HisAtri/LrcApi&Date)