待机配置

This commit is contained in:
2024-11-05 18:39:03 +08:00
parent ccfe0d311b
commit 8e2bf7f59b
15 changed files with 384 additions and 132 deletions

View File

@@ -1,63 +1,19 @@
package middleware
import (
"bytes"
"game-driver/internal/common"
"game-driver/internal/schema"
"game-driver/leaf"
"game-driver/pkg/audio"
"io"
"log"
"net/http"
"net/url"
"os"
"strings"
)
func open(u string) io.ReadCloser {
p, _ := strings.CutPrefix(u, "file://")
f, e := os.Open(p)
if e != nil {
log.Printf("BGM 文件 [%v] 打开错误: %v\n", u, e)
return nil
}
return f
}
func get(u string) io.ReadCloser {
resp, e := http.Get(u)
if e != nil {
log.Printf("BGM 文件 [%v] 下载失败: %v\n", u, e)
return nil
}
return resp.Body
}
func toBuffer(b io.ReadCloser) io.ReadCloser {
data := &bytes.Buffer{}
_, _ = data.ReadFrom(b)
defer b.Close()
return io.NopCloser(data)
}
func PlayBgm() leaf.HandlerFunc {
return func(c *leaf.Context) {
pm := leaf.Value[*schema.PlayModal](c, PayloadJSONKey)
u, err := url.Parse(pm.BGM)
if err != nil {
log.Println("BGM URL 解析错误: ", err)
} else {
var bgm io.ReadCloser
if u.Scheme == "file" {
bgm = open(u.String())
} else if u.Scheme == "http" || u.Scheme == "https" {
bgm = get(u.String())
} else {
log.Printf("不支持的BGM文件协议: %v\n", u.String())
}
// 获取到了资源进行播放
if bgm != nil {
go audio.PlayMP3(c, toBuffer(bgm))
}
bgm := common.LinkAudio(pm.BGM)
if bgm != nil {
go audio.PlayMP3(c, bgm)
}
c.Next()