From 4a29772de05fc574cdc0a8f41235bf0a3f018ccc Mon Sep 17 00:00:00 2001 From: sugarBecomer Date: Sun, 9 Nov 2025 00:58:59 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=B8=8B=E8=BD=BD=E5=9C=B0=E5=9D=80?= =?UTF-8?q?=E8=BF=94=E5=9B=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/application/music/downloader.go | 9 ++------ internal/controller/music/music_ctrlV1.go | 27 +++-------------------- 2 files changed, 5 insertions(+), 31 deletions(-) diff --git a/internal/application/music/downloader.go b/internal/application/music/downloader.go index a8246ea..58be719 100644 --- a/internal/application/music/downloader.go +++ b/internal/application/music/downloader.go @@ -46,7 +46,7 @@ func (c *Downloader) Search(ctx context.Context, keyword string) (result []Music return } -func (c *Downloader) Download(ctx context.Context, url string) (result []byte) { +func (c *Downloader) Download(ctx context.Context, url string) string { client := httpclient.Music.Clone(ctx) response, err := client.R().Get("https://www.gequbao.net" + url) if err != nil { @@ -64,10 +64,5 @@ func (c *Downloader) Download(ctx context.Context, url string) (result []byte) { download_url := gjson.Get(post.String(), "data.url").String() // 下载音频文件 - downloadResp, err := client.R().Get(download_url) - if err != nil { - utils.OkOrPanic(errors.NewBusinessError(503, "下载出错3"), oops.WithContext(ctx).Wrap) - } - - return downloadResp.Bytes() + return download_url } diff --git a/internal/controller/music/music_ctrlV1.go b/internal/controller/music/music_ctrlV1.go index 7820918..885bd06 100644 --- a/internal/controller/music/music_ctrlV1.go +++ b/internal/controller/music/music_ctrlV1.go @@ -2,12 +2,9 @@ package music import ( "context" - "fmt" v1 "likedream-goframe/internal/api/v1" "likedream-goframe/internal/application/music" "likedream-goframe/internal/utils" - - "github.com/gogf/gf/v2/net/ghttp" ) type MusicCtrlV1 struct { @@ -25,25 +22,7 @@ func (c *MusicCtrlV1) Search(ctx context.Context, req *v1.SearchMusicReq) (res * func (c *MusicCtrlV1) Download(ctx context.Context, req *v1.DownloadMusicReq) (res *utils.Response[any], err error) { defer utils.Pass(&err) - // 获取音频二进制数据 - audioData := music.MusicDownloader.Download(ctx, req.Path) - - // 从 context 获取 ghttp.Request - r := ghttp.RequestFromCtx(ctx) - - // 构建文件名:Name - Singer.mp3 - filename := fmt.Sprintf("music.mp3") - - // 设置响应头 - r.Response.Header().Set("Content-Type", "audio/mpeg") - r.Response.Header().Set("Content-Disposition", fmt.Sprintf("attachment; filename=\"%s\"", filename)) - r.Response.Header().Set("Content-Length", fmt.Sprintf("%d", len(audioData))) - - // 写入二进制数据 - r.Response.Write(audioData) - - // 标记已处理,防止框架再次处理响应 - r.ExitAll() - - return nil, nil + // 获取音频下载地址 + downloadUrl := music.MusicDownloader.Download(ctx, req.Path) + return utils.SuccessWithData[any](downloadUrl), nil }