1 前言

Meting API 是一个多功能的音乐播放服务接口,它能够帮助开发者轻松集成多种音乐平台的播放功能到自己的应用中。

本站音乐欣赏页使用了自建 Meting API 服务,可以前往查看相关数据获取。

注意

本教程使用的 Meting-API 由 @xizeyoupan 提供,其原作者是 @metowolf

2 安装

通过参阅官方文档及周边教程和我的个人实践,推荐使用 Docker 部署,本文将从命令行、宝塔面板和 1Panel 三处进行分别演示,但他们的本质都是 Docker 部署的方式。关于 Docker、宝塔面板和 1Panel 的安装部署可参考以下文章。

2.1 命令行

最简单的一种部署方式,仅需两行命令即可实现,前提确保Docker已被安装。

下载镜像

1
docker pull intemd/meting-api:latest

运行容器

1
docker run -d --name meting -p 3000:3000 intemd/meting-api:latest
  • -name后的meting为容器名称,可自定义。
  • -p后第一个3000为端口映射,可自定义。需要放行对应防火墙。

检查

使用 docker ps 命令检查是否启动成功。

找到 meting-api 自定义容器名称所在的行,看 STATUS 列是否为 running,若是即为安装成功。

2.2 宝塔面板

打开已安装Docker的宝塔面板,点击侧边栏Docker,然后在线上镜像中搜索 intemd/meting-api 并拉取。

image-20240603224940790

最后在容器页创建容器,使用命令创建,输入下方命令并执行。

1
docker run -d --name meting -p 3000:3000 intemd/meting-api:latest
  • -name后的meting为容器名称,可自定义。
  • -p后第一个3000为端口映射,可自定义。需要放行对应防火墙。

image-20240603225224498

检查是否成功只需要查看该容器的状态是否为运行中

2.3 1Panel

由于应用商店中未上架 Meting API,常规的安装方式就是从容器页面拉取镜像并创建容器,这里建议使用第三方应用商店一键部署。

获取第三方应用商店列表

打开计划任务页,点击创建计划任务,任务类型选择 Shell 脚本,脚本内容如下填写,其它必填项自定义。

1
2
3
git clone -b localApps https://mirror.ghproxy.com/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps
cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/
rm -r /opt/1panel/resource/apps/local/appstore-localApps

image-20240603232212372

然后在操作列点击执行,再前往应用商店点击更新应用列表,随后搜索 Meting-API

image-20240603232512449

最后点击安装,端口设置后需要放行对应防火墙,其它项均可自定义,如果面板开启了防火墙需要勾选端口外部访问。

image-20240603233006190

检查是否成功在已安装中找到该应用看状态是否为已启动

2.4 小结

虽然是三种不同的安装途径,但它们的本质都是 Docker 部署,尤其是宝塔面板与命令行最为相识。

完成安装后可在浏览器访问 IP:端口 验证是否成功。

3 配置HTTPS

如需要相关服务安全通过 https 访问,则需要绑定域名、安装 SSL 证书、设置反向代理(Nginx)。

  • 绑定域名请在域名服务商处将自定义二级域名解析到部署 Meting-API 的服务器上。
  • 申请免费 SSL 证书的方法很多,建议到域名服务商处查看能否申请。

3.1 命令行

将已申请 SSL 证书的证书文件(.pem)和密钥文件(.key)上传到服务器并记录路径。上传推荐使用 FinalShell

确保已安装 Nginx,打开 Nginx 配置文件,默认路径为 /usr/local/nginx/conf 目录下的 nginx.conf

1
vim /usr/local/nginx/conf/nginx.conf

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
server {
listen 443 ssl;
server_name meting-api;

ssl_certificate ../server.pem; # pem文件的路径
ssl_certificate_key ../server.key; # key文件的路径
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;

location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
}
  • 5行、6行:填写前面记录的证书、密钥文件路径。
  • 13行:创建容器时设置的端口映射,修改3000保持一致。

最后退出保存,并重新加载配置文件。

1
nginx -s reload

3.2 宝塔面板

在网站项目页添加站点,域名为前面解析的域名,其它项均自定义。

image-20240604003819847

在站点修改中的 SSL 里复制粘贴证书文件(.pem)和密钥文件(.key),然后在配置文件里与其它 location 项同级添加内容。

1
2
3
4
location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
  • 2行:创建容器时设置的端口映射,修改3000保持一致。

image-20240604010050222

3.3 1Panel

在网站页创建网站,选择反向代理,主域名填写前面解析的域名,代理地址添加 127.0.0.1:端口

image-20240604005550737

创建完成后点击配置,在 HTTPS 中启用 HTTPS 并导入证书文件(.pem)和密钥文件(.key),然后在配置文件里与其它 location 项同级添加内容。

1
2
3
4
location /meting/ {
proxy_pass http://localhost:3000/; # 设置的端口
proxy_set_header X-Forwarded-Host $scheme://$host:$server_port/meting;
}
  • 2行:创建容器时设置的端口映射,修改3000保持一致。

image-20240604010237097

3.4 小结

如果出现错误请仔细比对本教程的参考图,反向代理内容很容易添加到错误的地方。

根据官方文档作出的解释,配置反向代理时请务必使用给定文本,并且访问时在域名后添加 /meting/,否则 https 依旧使用 http 连接。

4 成功截图

  • 主页:https://域名/meting/

image-20240604011556536

  • 测试页:https://域名/meting/test/

image-20240604011721278

  • API地址:https://域名/meting/api/

image-20240604011803943

5 使用

该 API 对平台的支持:

图片歌词URL单曲歌单歌手搜索
网易云音乐
QQ音乐××
YouTube Music××
Spotify××

最简单的使用办法就是导入 MetingJS

导入之前先引入 API:

1
2
3
<script>
var meting_api='https://域名/meting/api?server=:server&type=:type&id=:id&auth=:auth&r=:r';
</script>

然后依次导入 APlayer.min.cssAPlayer.min.jsMeting.min.js

1
2
3
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/aplayer/1.10.1/APlayer.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/meting/2.0.1/Meting.min.js"></script>

最后参考示例使用:

1
2
3
4
5
<meting-js
server="netease"
type="playlist"
id="3778678">
</meting-js>
选项描述
servernetease:网易云音乐
tencent:QQ音乐
ytmusic:YouTube Music
spotify:Spotify
音乐平台
typesong:单曲
playlist:歌单
artist:歌手
search:搜索
类型
id3778678歌曲ID、歌单ID、专辑ID

以上为必填项,如需更多项可查阅 APlayer 文档

6 写在最后

Meting-API 部署并不算复杂,有需要的可以自行部署,不想部署的也可以使用一些公益项目,这里提供我部署的,有需要的可以使用。

1
https://meting-api.talen.top/meting/