From a55920f445f729596800da73c702587755c0c12f Mon Sep 17 00:00:00 2001 From: spark Date: Thu, 23 Jan 2025 17:29:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(backend):=20=E6=B7=BB=E5=8A=A0=E7=94=B5?= =?UTF-8?q?=E6=8A=A5=E6=96=B0=E9=97=BB=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 GetTelegraphList 函数,用于获取电报新闻列表 - 在处理用户消息时,添加了获取电报新闻的协程 - 优化了消息处理流程,增加了电报新闻的回复 --- backend/data/openai_api.go | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/backend/data/openai_api.go b/backend/data/openai_api.go index f28a7ba..a9b44e1 100644 --- a/backend/data/openai_api.go +++ b/backend/data/openai_api.go @@ -3,6 +3,8 @@ package data import ( "bufio" "encoding/json" + "fmt" + "github.com/PuerkitoBio/goquery" "github.com/go-resty/resty/v2" "go-stock/backend/logger" "strings" @@ -136,7 +138,7 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { wg := &sync.WaitGroup{} - wg.Add(3) + wg.Add(4) go func() { defer wg.Done() messages := SearchStockPriceInfo(stockCode) @@ -149,6 +151,18 @@ func (o OpenAi) NewChatStream(stock, stockCode string) <-chan string { "content": stock + "当前价格:" + price, }) }() + + go func() { + defer wg.Done() + messages := GetTelegraphList() + for _, message := range *messages { + msg = append(msg, map[string]interface{}{ + "role": "assistant", + "content": message, + }) + } + }() + go func() { defer wg.Done() messages := SearchStockInfo(stock, "depth") @@ -332,3 +346,25 @@ func (o OpenAi) NewCommonChatStream(stock, stockCode, apiURL, apiKey, Model stri }() return ch } + +func GetTelegraphList() *[]string { + url := "https://www.cls.cn/telegraph" + response, err := resty.New().R(). + SetHeader("Referer", "https://www.cls.cn/"). + SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 Edg/117.0.2045.60"). + Get(fmt.Sprintf(url)) + if err != nil { + return &[]string{} + } + //logger.SugaredLogger.Info(string(response.Body())) + document, err := goquery.NewDocumentFromReader(strings.NewReader(string(response.Body()))) + if err != nil { + return &[]string{} + } + var telegraph []string + document.Find("div.telegraph-content-box").Each(func(i int, selection *goquery.Selection) { + //logger.SugaredLogger.Info(selection.Text()) + telegraph = append(telegraph, selection.Text()) + }) + return &telegraph +}