Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

Awesome Lists containing this project

README

        


LOGO

# LrcApi

A Flask API For [StreamMusic](https://github.com/gitbobobo/StreamMusic)

> 欢迎更多的音乐服务接入本API,也欢迎各位前端开发者提出新的API适配需求。

> [JetBrains](https://www.jetbrains.com/) 为本项目提供免费的开源许可证。










中文 | English


查阅文档

## 功能

支持酷狗/聚合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许可证的要求并遵守相关规定。

# 赞赏一下

微信

reward

[![Star History Chart](https://api.star-history.com/svg?repos=HisAtri/LrcApi&type=Date)](https://star-history.com/#HisAtri/LrcApi&Date)