study_xxqg/lib/score.go

139 lines
5.2 KiB
Go
Raw Normal View History

2021-11-12 07:46:33 +00:00
package lib
import (
"fmt"
"net/http"
2021-11-27 08:24:24 +00:00
"time"
2021-11-12 07:46:33 +00:00
log "github.com/sirupsen/logrus"
"github.com/tidwall/gjson"
2022-12-14 07:43:39 +00:00
"github.com/sjkhsl/study_xxqg/utils"
2021-11-12 07:46:33 +00:00
)
type Score struct {
2022-02-16 07:10:38 +00:00
TotalScore int `json:"total_score"`
TodayScore int `json:"today_score"`
Content map[string]Data `json:"content"`
2021-11-12 07:46:33 +00:00
}
type Data struct {
2022-02-16 07:10:38 +00:00
CurrentScore int `json:"current_score"`
MaxScore int `json:"max_score"`
2021-11-12 07:46:33 +00:00
}
func GetUserScore(cookies []*http.Cookie) (Score, error) {
2021-11-12 07:46:33 +00:00
var score Score
var resp []byte
header := map[string]string{
2021-11-12 07:46:33 +00:00
"Cache-Control": "no-cache",
}
client := utils.GetClient()
response, err := client.R().SetCookies(cookies...).SetHeaders(header).Get(userTotalscoreUrl)
2021-11-12 07:46:33 +00:00
if err != nil {
log.Errorln("获取用户总分错误" + err.Error())
return Score{}, err
}
resp = response.Bytes()
2021-11-12 07:46:33 +00:00
score.TotalScore = int(gjson.GetBytes(resp, "data.score").Int())
response, err = client.R().SetCookies(cookies...).SetHeaders(header).Get(userTodaytotalscoreUrl)
if err != nil {
log.Errorln("获取用户总分错误" + err.Error())
2021-11-12 07:46:33 +00:00
return Score{}, err
}
resp = response.Bytes()
2021-11-12 07:46:33 +00:00
score.TodayScore = int(gjson.GetBytes(resp, "data.score").Int())
response, err = client.R().SetCookies(cookies...).SetHeaders(header).Get(userRatescoreUrl)
2021-11-12 07:46:33 +00:00
if err != nil {
log.Errorln("获取用户总分错误" + err.Error())
2021-11-12 07:46:33 +00:00
return Score{}, err
}
resp = response.Bytes()
2021-11-12 07:46:33 +00:00
datas := gjson.GetBytes(resp, "data.taskProgress").Array()
2023-01-01 13:12:15 +00:00
m := make(map[string]Data, 6)
2021-11-12 07:46:33 +00:00
m["article"] = Data{
CurrentScore: int(datas[0].Get("currentScore").Int()),
MaxScore: int(datas[0].Get("dayMaxScore").Int()),
}
m["video"] = Data{
CurrentScore: int(datas[1].Get("currentScore").Int()),
MaxScore: int(datas[1].Get("dayMaxScore").Int()),
}
2023-01-01 13:12:15 +00:00
// m["weekly"] = Data{
// CurrentScore: int(datas[2].Get("currentScore").Int()),
// MaxScore: int(datas[2].Get("dayMaxScore").Int()),
// }
m["video_time"] = Data{
2021-11-12 07:46:33 +00:00
CurrentScore: int(datas[2].Get("currentScore").Int()),
MaxScore: int(datas[2].Get("dayMaxScore").Int()),
}
2023-01-01 13:12:15 +00:00
m["login"] = Data{
2021-11-12 07:46:33 +00:00
CurrentScore: int(datas[3].Get("currentScore").Int()),
MaxScore: int(datas[3].Get("dayMaxScore").Int()),
}
2023-01-01 13:12:15 +00:00
m["special"] = Data{
2021-11-12 07:46:33 +00:00
CurrentScore: int(datas[4].Get("currentScore").Int()),
MaxScore: int(datas[4].Get("dayMaxScore").Int()),
}
2023-01-01 13:12:15 +00:00
m["daily"] = Data{
2021-11-12 07:46:33 +00:00
CurrentScore: int(datas[5].Get("currentScore").Int()),
MaxScore: int(datas[5].Get("dayMaxScore").Int()),
}
score.Content = m
return score, err
}
func PrintScore(score Score) string {
result := ""
result += fmt.Sprintf("当前学习总积分:%d\n今日得分%d\n", score.TotalScore, score.TodayScore)
result += fmt.Sprintf("[%v] [INFO]: 登录:%v/%v\n文章学习%v/%v\n视频学习%v/%v\n视频时长%v/%v\n[%v] [INFO]: 每日答题:%v/%v\n每周答题%v/%v\n专项答题%v/%v",
2021-11-27 08:24:24 +00:00
time.Now().Format("2006-01-02 15:04:05"),
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
score.Content["video_time"].CurrentScore, score.Content["video_time"].MaxScore,
2021-11-27 08:24:24 +00:00
time.Now().Format("2006-01-02 15:04:05"),
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
score.Content["weekly"].CurrentScore, score.Content["weekly"].MaxScore,
score.Content["special"].CurrentScore, score.Content["special"].MaxScore,
)
log.Infoln(result)
return result
2021-11-12 07:46:33 +00:00
}
2021-11-27 08:24:24 +00:00
2022-07-24 07:56:12 +00:00
func FormatScore(score Score) string {
2021-11-27 08:24:24 +00:00
result := ""
result += fmt.Sprintf("当前学习总积分:%d\n今日得分%d\n", score.TotalScore, score.TodayScore)
result += fmt.Sprintf("登录:%v/%v\n文章学习%v/%v\n视频学习%v/%v\n视频时长%v/%v\n每日答题%v/%v\n每周答题%v/%v\n专项答题%v/%v",
2021-11-27 08:24:24 +00:00
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
score.Content["video_time"].CurrentScore, score.Content["video_time"].MaxScore,
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
score.Content["weekly"].CurrentScore, score.Content["weekly"].MaxScore,
score.Content["special"].CurrentScore, score.Content["special"].MaxScore,
)
return result
}
func FormatScoreShort(score Score) string {
result := ""
result += fmt.Sprintf("当前学习总积分:%d\n今日得分%d\n", score.TotalScore, score.TodayScore)
result += fmt.Sprintf("登录:%v/%v\n文章学习%v/%v\n视频学习%v/%v\n视频时长%v/%v\n每日答题%v/%v\n每周答题%v/%v\n专项答题%v/%v",
score.Content["login"].CurrentScore, score.Content["login"].MaxScore,
score.Content["article"].CurrentScore, score.Content["article"].MaxScore,
score.Content["video"].CurrentScore, score.Content["video"].MaxScore,
score.Content["video_time"].CurrentScore, score.Content["video_time"].MaxScore,
score.Content["daily"].CurrentScore, score.Content["daily"].MaxScore,
score.Content["weekly"].CurrentScore, score.Content["weekly"].MaxScore,
score.Content["special"].CurrentScore, score.Content["special"].MaxScore,
)
return result
}