优化全局zap的打印,修复待机任务出现多个的情况

This commit is contained in:
2024-11-12 14:47:20 +08:00
parent 355880c3f9
commit cc12b60437
20 changed files with 181 additions and 84 deletions

View File

@@ -8,16 +8,16 @@ import (
"io"
)
func PlayBgmMP3(r io.ReadCloser, opts ...beep.LoopOption) (*beep.Ctrl, func() error) {
func PlayBgmMP3(r io.ReadCloser, opts ...beep.LoopOption) (*beep.Ctrl, func() error, error) {
streamer, format, err := mp3.Decode(r)
if err != nil {
return nil, func() error { return nil }
return nil, func() error { return nil }, err
}
loop2, err := beep.Loop2(streamer, opts...)
if err != nil {
logger.Infoln("循环播放异常: ", err)
return nil, streamer.Close
return nil, streamer.Close, err
}
s := beep.Resample(4, format.SampleRate, DefaultSampleRate, loop2)
@@ -27,5 +27,5 @@ func PlayBgmMP3(r io.ReadCloser, opts ...beep.LoopOption) (*beep.Ctrl, func() er
streamer.Close()
})))
return ctrl, streamer.Close
return ctrl, streamer.Close, nil
}

View File

@@ -18,10 +18,16 @@ func NewLogger() *Logger {
}
}
// ZapLogger 返回 zap 原始的 zap.Logger
func (l *Logger) ZapLogger() *zap.Logger {
return l.zl
}
// Sync 刷新所有缓冲的日志条目
func (l *Logger) Sync() error {
return l.zs.Sync()
}
var DefaultLogger = NewLogger()
// Debug logs the provided arguments at [DebugLevel].

View File

@@ -49,7 +49,7 @@ func (tts *AliTTS) Sound(text string) {
if err == nil && buf != nil {
audio.PlayWav(tts.ctx, buf)
} else {
logger.Panicln("AliTTS 请求异常: ", err)
logger.Errorln("AliTTS 请求异常: ", err)
}
}

View File

@@ -2,6 +2,7 @@ package utils
import (
"bytes"
"fmt"
"game-driver/pkg/logger"
"io"
"net/http"
@@ -48,21 +49,20 @@ func get(u string) io.ReadCloser {
}
// LinkAudio 链接音频,解析链接,直接提取为数据流
func LinkAudio(link string) (bgm io.ReadCloser) {
func LinkAudio(link string) (bgm io.ReadCloser, err error) {
if link == "" {
return nil
return
}
u, err := url.Parse(link)
if err != nil {
logger.Infoln("音频 URL 解析错误: ", err)
err = fmt.Errorf("URL 解析错误: %v", err)
} else {
if u.Scheme == "file" {
bgm = open(link)
} else if u.Scheme == "http" || u.Scheme == "https" {
bgm = get(link)
} else {
logger.Infof("不支持的音频文件协议: %v\n", u.String())
return
err = fmt.Errorf("不支持的链接协议: %v", u.String())
}
bgm = toSeeker(bgm)
}

View File

@@ -1,7 +1,7 @@
package utils
import (
"game-driver/pkg/logger"
"fmt"
"io"
"net/http"
"net/url"
@@ -11,13 +11,13 @@ import (
)
// LinkVideo 链接视频,解析链接,网络文件会下载到临时目录并返回本地路径
func LinkVideo(link string) (local string) {
func LinkVideo(link string) (local string, err error) {
if link == "" {
return
}
u, err := url.Parse(link)
if err != nil {
logger.Infoln("音频 URL 解析错误: ", err)
err = fmt.Errorf("URL 解析错误: %v", err)
} else {
if u.Scheme == "file" {
local, _ = strings.CutPrefix(link, "file://")
@@ -26,13 +26,12 @@ func LinkVideo(link string) (local string) {
tmpLocal := path.Join(os.TempDir(), path.Base(p))
err = Download(link, tmpLocal)
if err != nil {
logger.Infoln("音频文件下载失败: ", err)
err = fmt.Errorf("链接文件获取失败: %v", err)
return
}
local = tmpLocal
} else {
logger.Infof("不支持的视频链接协议: %v\n", u.String())
return
err = fmt.Errorf("不支持的链接协议: %v", u.String())
}
}
return

View File

@@ -25,8 +25,8 @@ func Play(ctx context.Context, file string) error {
a := make(chan struct{})
defer close(a)
wait.Add(1)
go func() {
wait.Add(1)
defer wait.Done()
for {
select {