HisAtri / LrcApi

A Flask API For StreamMusic
https://docs.lrc.cx
GNU General Public License v3.0
449 stars 44 forks source link
lyrics music navidrome
LOGO

LrcApi

A Flask API For StreamMusic

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

JetBrains 为本项目提供免费的开源许可证。


中文 | 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中的AuthorizationAuthentication字段。如果鉴权不符合,则返回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部署方式

docker run -d \
    -p 28883:28883 \
    -v /home/user/music:/music \
    -e API_AUTH=自定义一个鉴权key \
    hisatri/lrcapi:latest

或者,请指定一个Tag(推荐)

docker run -d \
    -p 28883:28883 \
    -v /home/user/music:/music \
    -e API_AUTH=自定义一个鉴权key \
    hisatri/lrcapi:1.5.2

一个Docker-compose配置如下

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。

音乐元数据修改接口

接口详情

支持格式

已测试:

支持标签

状态码

简易测试环境

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