From e24965393b28148007396ebac0f1b87c10d6f8b0 Mon Sep 17 00:00:00 2001 From: spark Date: Tue, 11 Feb 2025 21:33:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(browser):=E4=BD=BF=E7=94=A8Edge=E6=9B=BF?= =?UTF-8?q?=E4=BB=A3Chrome=E6=89=A7=E8=A1=8CAI=E5=88=86=E6=9E=90=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 checkEdgeOnWindows 函数以检查 Edge 浏览器安装情况 - 修改 AI 分析相关功能,使用 Edge 浏览器代替 Chrome - 更新相关日志和错误处理 --- app.go | 37 +++++++++++++++++++++++++++++++--- backend/data/openai_api.go | 10 ++++++++- backend/data/stock_data_api.go | 20 ++++++++++++++++-- frontend/package.json.md5 | 2 +- 4 files changed, 62 insertions(+), 7 deletions(-) diff --git a/app.go b/app.go index b78f00c..cd69183 100644 --- a/app.go +++ b/app.go @@ -127,11 +127,22 @@ func (a *App) domReady(ctx context.Context) { go func() { checkUpdate(a) }() + //检查谷歌浏览器 + //go func() { + // f := checkChromeOnWindows() + // if !f { + // go runtime.EventsEmit(a.ctx, "warnMsg", "谷歌浏览器未安装,ai分析功能可能无法使用") + // } + //}() + + //检查Edge浏览器 go func() { - f := checkChromeOnWindows() - if !f { - go runtime.EventsEmit(a.ctx, "warnMsg", "谷歌浏览器未安装,ai分析功能可能无法使用") + path, e := checkEdgeOnWindows() + if !e { + go runtime.EventsEmit(a.ctx, "warnMsg", "Edge浏览器未安装,ai分析功能可能无法使用") + } else { + logger.SugaredLogger.Infof("Edge浏览器已安装,路径为: %s", path) } }() } @@ -464,6 +475,26 @@ func checkChromeOnWindows() bool { _, _, err = key.GetValue("Path", nil) return err == nil } + +// checkEdgeOnWindows 在 Windows 系统上检查Edge浏览器是否安装,并返回安装路径 +func checkEdgeOnWindows() (string, bool) { + key, err := registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe`, registry.QUERY_VALUE) + if err != nil { + // 尝试在 WOW6432Node 中查找(适用于 64 位系统上的 32 位程序) + key, err = registry.OpenKey(registry.LOCAL_MACHINE, `SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\App Paths\msedge.exe`, registry.QUERY_VALUE) + if err != nil { + return "", false + } + defer key.Close() + } + defer key.Close() + path, _, err := key.GetStringValue("Path") + if err != nil { + return "", false + } + return path, true +} + func GetImageBase(bytes []byte) string { return "data:image/jpeg;base64," + base64.StdEncoding.EncodeToString(bytes) } diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index c77ea85..dec35f7 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -294,8 +294,16 @@ func GetFinancialReports(stockCode string) *[]string { timeoutCtx, timeoutCtxCancel := context.WithTimeout(context.Background(), 30*time.Second) defer timeoutCtxCancel() - ctx, cancel := chromedp.NewContext( + edgePath := `C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` + + pctx, pcancel := chromedp.NewExecAllocator( timeoutCtx, + chromedp.ExecPath(edgePath), + chromedp.Flag("headless", true), + ) + defer pcancel() + ctx, cancel := chromedp.NewContext( + pctx, chromedp.WithLogf(logger.SugaredLogger.Infof), chromedp.WithErrorf(logger.SugaredLogger.Errorf), ) diff --git a/backend/data/stock_data_api.go b/backend/data/stock_data_api.go index 97c4ab8..c4af1e7 100644 --- a/backend/data/stock_data_api.go +++ b/backend/data/stock_data_api.go @@ -522,11 +522,20 @@ func SearchStockPriceInfo(stockCode string) *[]string { timeoutCtx, timeoutCtxCancel := context.WithTimeout(context.Background(), 30*time.Second) defer timeoutCtxCancel() - ctx, cancel := chromedp.NewContext( + edgePath := `C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` + + pctx, pcancel := chromedp.NewExecAllocator( timeoutCtx, + chromedp.ExecPath(edgePath), + chromedp.Flag("headless", true), + ) + defer pcancel() + ctx, cancel := chromedp.NewContext( + pctx, chromedp.WithLogf(logger.SugaredLogger.Infof), chromedp.WithErrorf(logger.SugaredLogger.Errorf), ) + defer cancel() defer func(ctx context.Context) { @@ -594,9 +603,16 @@ func SearchStockInfo(stock, msgType string) *[]string { // 创建一个 chromedp 上下文 timeoutCtx, timeoutCtxCancel := context.WithTimeout(context.Background(), 30*time.Second) defer timeoutCtxCancel() + edgePath := `C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe` - ctx, cancel := chromedp.NewContext( + pctx, pcancel := chromedp.NewExecAllocator( timeoutCtx, + chromedp.ExecPath(edgePath), + chromedp.Flag("headless", true), + ) + defer pcancel() + ctx, cancel := chromedp.NewContext( + pctx, chromedp.WithLogf(logger.SugaredLogger.Infof), chromedp.WithErrorf(logger.SugaredLogger.Errorf), ) diff --git a/frontend/package.json.md5 b/frontend/package.json.md5 index 3aa95d7..ba5df9c 100644 --- a/frontend/package.json.md5 +++ b/frontend/package.json.md5 @@ -1 +1 @@ -663ba262da70968efc6e3c699fb685b3 \ No newline at end of file +3234b0467a05bbf094762aef81a1e9b0 \ No newline at end of file