待机配置
This commit is contained in:
54
internal/common/link_audio.go
Normal file
54
internal/common/link_audio.go
Normal file
@@ -0,0 +1,54 @@
|
||||
package common
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"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("音频文件 [%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("音频文件 [%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 LinkAudio(link string) (bgm io.ReadCloser) {
|
||||
u, err := url.Parse(link)
|
||||
if err != nil {
|
||||
log.Println("音频 URL 解析错误: ", err)
|
||||
} else {
|
||||
if u.Scheme == "file" {
|
||||
bgm = open(u.String())
|
||||
} else if u.Scheme == "http" || u.Scheme == "https" {
|
||||
bgm = get(u.String())
|
||||
} else {
|
||||
log.Printf("不支持的音频文件协议: %v\n", u.String())
|
||||
}
|
||||
bgm = toBuffer(bgm)
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -56,3 +56,6 @@ func (g *simpleStopper) Done() <-chan struct{} {
|
||||
|
||||
// GlobalStopper 全局停止器
|
||||
var GlobalStopper Stopper = &simpleStopper{}
|
||||
|
||||
// GlobalBgStopper 全局后台停止器
|
||||
var GlobalBgStopper Stopper = &simpleStopper{}
|
||||
|
||||
Reference in New Issue
Block a user