feat: 添加查成绩功能

This commit is contained in:
lixiangwuxian
2024-10-09 00:50:42 +08:00
parent 6fee9f965c
commit f5e9b74c5a
4 changed files with 280 additions and 54 deletions

View File

@@ -12,7 +12,6 @@ const wsURL = "wss://scoresaber.com/ws"
var ScoresManager = scoresManager{}
// scoresManager 管理最近的 5 条数据
type scoresManager struct {
recentScores []Command
mu sync.Mutex
@@ -34,7 +33,7 @@ func (sm *scoresManager) connect() error {
return err
}
sm.retryTimes = 0
sm.recentScores = make([]Command, 0, 50)
sm.recentScores = make([]Command, 0)
go sm.receiveData()
return nil
}
@@ -49,12 +48,17 @@ func (sm *scoresManager) receiveData() {
for {
var cmd Command
err := sm.conn.ReadJSON(&cmd)
if cmd.CommandData.Score.LeaderboardPlayerInfo.Country != "CN" {
log.Printf("非国内玩家数据:%v", cmd)
if err != nil {
log.Print("读取数据失败:", err)
time.Sleep(time.Second)
sm.retryTimes++
if sm.retryTimes > 3 {
return
}
continue
}
if err != nil {
log.Printf("读取数据失败:", err)
SSQuery.SaveRecord(cmd.CommandData)
if cmd.CommandData.Score.LeaderboardPlayerInfo.Country != "CN" {
continue
}
sm.mu.Lock()
@@ -67,11 +71,11 @@ func (sm *scoresManager) receiveData() {
}
func (sm *scoresManager) GetRecentScores(count int) []Command {
sm.mu.Lock()
defer sm.mu.Unlock()
if count > len(sm.recentScores) {
count = len(sm.recentScores)
}
sm.mu.Lock()
defer sm.mu.Unlock()
scoresCopy := make([]Command, count)
copy(scoresCopy, sm.recentScores[len(sm.recentScores)-count:])
return scoresCopy