xizeyoupan / Meting-API

🐳 Meting API 的容器化与部署
https://meting-dd.2333332.xyz
208 stars 207 forks source link
meting meting-api

Meting-API

https://meting-dd.2333332.xyz/test

写在前面

Meting后端的基础是一个接口,原作者在此基础上增加了php后端,又用node做了一层wrapper

同时可以发现原作者在docker hub上传了php后端的镜像,但没有node的镜像(仓库中仍有Dockerfile)。于是重写了一下。

Feature

进度

server参数名称 图片 歌词 url 单曲/song 歌单/playlist 歌手/artist 搜索/search
网易云 netease
qq音乐 tencent × ×
youtube music ytmusic √⁰ × ×
spotify spotify √⁰ √⁰ √⁰ √⁰ × ×
more..

地区限制

部署在国外

客户端/浏览器访问地区 国内 国外
网易云
qq音乐 √¹ ×
youtube music √²
spotify music √²

部署在国内

客户端/浏览器访问地区 国内 国外
网易云
qq音乐 ×
youtube music √²
spotify music √²

⁰youtube和spotify的歌词由 https://github.com/xizeyoupan/syncedlyrics_aio 检索而来,歌词匹配准确度不会特别高。spotify的音乐源由 https://github.com/spotDL/spotify-downloader 检索而来,歌曲匹配准确度不会很高,并且获取url的时间较长。

¹使用jsonp,需要替换前端插件https://cdn.jsdelivr.net/npm/meting@2.0.1/dist/Meting.min.js => https://cdn.jsdelivr.net/npm/@xizeyoupan/meting@latest/dist/Meting.min.js , or https://unpkg.com/meting@2.0.1/dist/Meting.min.js => https://unpkg.com/@xizeyoupan/meting@latest/dist/Meting.min.js

More info https://github.com/xizeyoupan/MetingJS

²见下方参数配置

参数配置

以下参数均由环境变量配置

api网址

仅为示例,不保证稳定性

https://meting-dd.2333332.xyz/api => Deno Deploy

可自行测试,如 https://meting-dd.2333332.xyz/test

部署

部署 Meting-API 需要基本的计算机编程常识,如果您在部署过程中遇到无法解决的问题请到 issues 向我们提问,我们会尽快给您答复。

如果部署成功,在你的域名后拼接上/test,理论上出现类似下图数据:

手动部署

需要克隆项目到本地,node版本>=18。

npm i
npm run build:all

Node

node node.js

Deno

deno run --allow-net --allow-env dist/deno.js

或者直接下载action中的文件运行。

Docker部署

运行下面的命令下载 Meting-API 镜像

docker pull intemd/meting-api:latest

然后运行 Meting-API 即可

docker run -d --name meting -p 3000:3000 intemd/meting-api:latest

部署到vercel

比较出名,提供的域名被阻断,使用自有域名后速度尚可。冷启动速度一般。

一直下一步即可。

Deno Deploy

类似Cloudflare Workers,但提供的域名未被阻断,使用Deno为runtime。

fork本项目后新建一个project,首先在设置中加一个Environment Variable,名称是OVERSEAS,值为1。接着link到你自己的项目,部署方式选action,Deno Deploy 的 project 的 name 需要与你自己的yml中设置的吻合。

        uses: denoland/deployctl@v1
        with:
          project: meting #这里要改成你的Deno Deploy的project的name
          entrypoint: deno.js

接着在actions/publish/run workflow中勾选Deno即可。

杂项

反向代理

对于很多HTTP框架的代理来说,只需设置X-Forwarded请求头或transparent proxy。但由于本项目使用了轻量化框架Hono,目前官方似乎还不支持。所以实际有用的的请求头只有X-Forwarded-Host

比如我用nginx想让请求 http://localhost:8099/meting 的流量全部转发到 http://localhost:3000 ,直接这么写是不行的:

   server {
      listen       8099;
      server_name  localhost;

      location /meting/ {
         proxy_pass http://localhost:3000/;
      }
   }

正确写法:

SSL证书

在上面基础上改动即可。

使用

在导入前端插件前,加入

<script>
var meting_api='http://example.com/api?server=:server&type=:type&id=:id&auth=:auth&r=:r';
</script>

比如

<script>
var meting_api='http://localhost:3000/api?server=:server&type=:type&id=:id&auth=:auth&r=:r';
</script>

即可。就这样吧,那我去看vtb了,88

相关项目

https://github.com/metowolf/MetingJS

https://github.com/metowolf/Meting-API

https://github.com/honojs/hono

https://github.com/honojs/node-server

https://github.com/camsong/fetch-jsonp

https://github.com/Binaryify/NeteaseCloudMusicApi

https://github.com/jsososo/QQMusicApi