待机配置
This commit is contained in:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user