refactor: 并发处理 Best30 和 Recent10 的图片下载
This commit is contained in:
parent
5ce7f7bba4
commit
db84731d9d
@ -638,31 +638,50 @@ func getAllScoreSaberScores(playerID string) ([]SongData, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("获取Best30失败: %v", err)
|
return nil, fmt.Errorf("获取Best30失败: %v", err)
|
||||||
}
|
}
|
||||||
for i, score := range topScores {
|
|
||||||
songData, err := convertScoreSaberToSongData(score, cwd)
|
|
||||||
if err != nil {
|
|
||||||
log.Printf("转换分数失败: %v", err)
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
songData.IsBest30 = i < 30
|
|
||||||
allSongs = append(allSongs, songData)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取Recent10
|
|
||||||
recentScores, err := getRecent10Scores(playerID)
|
recentScores, err := getRecent10Scores(playerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("获取Recent10失败: %v", err)
|
return nil, fmt.Errorf("获取Recent10失败: %v", err)
|
||||||
}
|
}
|
||||||
for _, score := range recentScores {
|
wgAll := sync.WaitGroup{}
|
||||||
|
wgAll.Add(2)
|
||||||
|
go func() {
|
||||||
|
defer wgAll.Done()
|
||||||
|
wg := sync.WaitGroup{}
|
||||||
|
for i, score := range topScores {
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
songData, err := convertScoreSaberToSongData(score, cwd)
|
songData, err := convertScoreSaberToSongData(score, cwd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("转换分数失败: %v", err)
|
log.Printf("转换分数失败: %v", err)
|
||||||
continue
|
return
|
||||||
|
}
|
||||||
|
songData.IsBest30 = i < 30
|
||||||
|
allSongs[i] = songData
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
}()
|
||||||
|
// 获取Recent10
|
||||||
|
go func() {
|
||||||
|
defer wgAll.Done()
|
||||||
|
wg := sync.WaitGroup{}
|
||||||
|
for _, score := range recentScores {
|
||||||
|
wg.Add(1)
|
||||||
|
go func() {
|
||||||
|
defer wg.Done()
|
||||||
|
songData, err := convertScoreSaberToSongData(score, cwd)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("转换分数失败: %v", err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
songData.IsBest30 = false
|
songData.IsBest30 = false
|
||||||
allSongs = append(allSongs, songData)
|
allSongs = append(allSongs, songData)
|
||||||
|
}()
|
||||||
|
wg.Wait()
|
||||||
}
|
}
|
||||||
|
}()
|
||||||
|
wgAll.Wait()
|
||||||
return allSongs, nil
|
return allSongs, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user