diff --git a/README.md b/README.md index 0246284..bfab214 100644 --- a/README.md +++ b/README.md @@ -46,13 +46,15 @@ | 功能说明 | 状态 | 备注 | |-----------------|----|----------------------------------------------------------------------------------------------------------| | ETF支持 | 🚧 | ETF数据支持 (目前可以查看净值和估值) | -| 美股支持 | ✅ | 美股数据支持 | -| 港股支持 | ✅ | 港股数据支持 (目前有延迟) | +| 美股支持 | ✅ | 美股数据支持 | +| 港股支持 | ✅ | 港股数据支持 | | 多轮对话 | ✅ | AI分析后可继续对话提问 | | 自定义AI分析提问模板 | ✅ | 可配置的提问模板 [v2025.2.12.7-alpha](https://github.com/ArvinLovegood/go-stock/releases/tag/v2025.2.12.7-alpha) | | 不再强制依赖Chrome浏览器 | ✅ | 默认使用edge浏览器抓取新闻资讯 | ## 👀 更新日志 +### 2025.04.29 补全港股/美股基础数据,优化港股股价延迟问题,优化初始化逻辑 +### 2025.04.25 市场资讯支持AI分析和总结:让AI帮你读市场! ### 2025.04.24 新增市场行情模块:即时掌握全球市场行情资讯/动态,从此再也不用偷摸去各大财经网站啦。go-stock一键帮你搞定! ### 2025.04.22 优化K线图展示,支持拉伸放大,看得更舒服啦! ### 2025.04.21 港股,美股K线数据获取优化 diff --git a/backend/data/stock_data_api.go b/backend/data/stock_data_api.go index 96dfd07..8a91497 100644 --- a/backend/data/stock_data_api.go +++ b/backend/data/stock_data_api.go @@ -8,7 +8,6 @@ import ( "bytes" "context" "encoding/json" - "errors" "fmt" "github.com/PuerkitoBio/goquery" "github.com/chromedp/chromedp" @@ -309,15 +308,14 @@ func (receiver StockDataApi) GetStockCodeRealTimeData(StockCodes ...string) (*[] SetHeader("Referer", "https://gu.qq.com/"). SetHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0"). Get(url) + logger.SugaredLogger.Infof("GetStockCodeRealTimeData %s", url) if err != nil { logger.SugaredLogger.Error(err.Error()) return &[]StockInfo{}, err } str := GB18030ToUTF8(resp.Body()) dataStr := strutil.SplitAndTrim(strings.Trim(str, "\n"), ";") - if len(dataStr) == 0 { - return &[]StockInfo{}, errors.New("获取股票信息失败,请检查股票代码是否正确") - } + for _, data := range dataStr { stockData, err := ParseTxStockData(data) if err != nil { @@ -365,9 +363,7 @@ func (receiver StockDataApi) GetStockCodeRealTimeData(StockCodes ...string) (*[] str := GB18030ToUTF8(resp.Body()) dataStr := strutil.SplitEx(str, "\n", true) - if len(dataStr) == 0 { - return &[]StockInfo{}, errors.New("获取股票信息失败,请检查股票代码是否正确") - } + for _, data := range dataStr { //logger.SugaredLogger.Info(data) stockData, err := ParseFullSingleStockData(data) diff --git a/main.go b/main.go index 1c81a1a..4808225 100644 --- a/main.go +++ b/main.go @@ -222,14 +222,18 @@ func initStockDataUS() { return } log.SugaredLogger.Infof("init stock data us %d", len(v)) - for _, item := range v { - var count int64 - db.Dao.Model(&models.StockInfoUS{}).Where("code = ?", item.Code).Count(&count) - if count > 0 { - //log.SugaredLogger.Infof("stock data us %s exist", item.Code) - continue + var total int64 + db.Dao.Model(&models.StockInfoUS{}).Count(&total) + if total != int64(len(v)) { + for _, item := range v { + var count int64 + db.Dao.Model(&models.StockInfoUS{}).Where("code = ?", item.Code).Count(&count) + if count > 0 { + //log.SugaredLogger.Infof("stock data us %s exist", item.Code) + continue + } + db.Dao.Model(&models.StockInfoUS{}).Create(&item) } - db.Dao.Model(&models.StockInfoUS{}).Create(&item) } } @@ -241,15 +245,20 @@ func initStockDataHK() { return } log.SugaredLogger.Infof("init stock data hk %d", len(v)) - for _, item := range v { - var count int64 - db.Dao.Model(&models.StockInfoHK{}).Where("code = ?", item.Code).Count(&count) - if count > 0 { - //log.SugaredLogger.Infof("stock data hk %s exist", item.Code) - continue + var total int64 + db.Dao.Model(&models.StockInfoHK{}).Count(&total) + if total != int64(len(v)) { + for _, item := range v { + var count int64 + db.Dao.Model(&models.StockInfoHK{}).Where("code = ?", item.Code).Count(&count) + if count > 0 { + //log.SugaredLogger.Infof("stock data hk %s exist", item.Code) + continue + } + db.Dao.Model(&models.StockInfoHK{}).Create(&item) } - db.Dao.Model(&models.StockInfoHK{}).Create(&item) } + } func updateBasicInfo() {