study_xxqg/main.go

121 lines
2.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package main
import (
"fmt"
"io"
"os"
"path"
"strconv"
"time"
rotates "github.com/lestrrat-go/file-rotatelogs"
"github.com/robfig/cron/v3"
log "github.com/sirupsen/logrus"
easy "github.com/t-tomalak/logrus-easy-formatter"
"github.com/huoxue1/study_xxqg/lib"
"github.com/huoxue1/study_xxqg/push"
)
func init() {
config = lib.GetConfig()
logFormatter := &easy.Formatter{
TimestampFormat: "2006-01-02 15:04:05",
LogFormat: "[%time%] [%lvl%]: %msg% \n",
}
w, err := rotates.New(path.Join("logs", "%Y-%m-%d.log"), rotates.WithRotationTime(time.Hour*24))
if err != nil {
log.Errorf("rotates init err: %v", err)
panic(err)
}
log.SetOutput(io.MultiWriter(w, os.Stdout))
log.SetFormatter(logFormatter)
level, err := log.ParseLevel(config.LogLevel)
log.SetLevel(level)
}
var (
config lib.Config
)
func init() {
_, err := os.Stat(`./config/`)
if err != nil {
os.Mkdir("./config/", 0666)
return
}
}
func main() {
if config.Cron != "" {
c := cron.New()
_, err := c.AddFunc(config.Cron, func() {
defer func() {
i := recover()
if i != nil {
log.Errorln(i)
log.Errorln("执行定时任务出现异常")
}
}()
do()
})
if err != nil {
log.Errorln(err.Error())
return
}
c.Start()
select {}
}
do()
}
func do() {
log.Infoln(`// 刷课模式默认为1
1只刷文章何视频
2只刷文章和视频和每日答题
3刷文章和视频和每日答题每周答题和专项答题`)
log.Infoln("检测到模式", config.Model)
getPush := push.GetPush(config)
core := lib.Core{ShowBrowser: config.ShowBrowser, Push: getPush}
defer core.Quit()
core.Init()
var cookies []lib.Cookie
users, _ := lib.GetUsers()
if len(users) < 1 {
log.Infoln("未检测到有效用户信息,将采用登录模式")
cookies, _ = core.Login()
} else if len(users) == 1 {
log.Infoln("检测到1位有效用户信息采用默认用户")
cookies = users[0].Cookies
log.Infoln("已选择用户: ", users[0].Nick)
} else {
for i, user := range users {
log.Infoln("序号:", i+1, " ===> ", user.Nick)
}
log.Infoln("请输入对应序号选择对应账户")
var i int
_, _ = fmt.Scanln(&i)
cookies = users[i-1].Cookies
log.Infoln("已选择用户: ", users[i-1].Nick)
}
core.LearnArticle(cookies)
core.LearnVideo(cookies)
if config.Model == 2 {
core.RespondDaily(cookies, "daily")
} else if config.Model == 3 {
core.RespondDaily(cookies, "daily")
core.RespondDaily(cookies, "weekly")
core.RespondDaily(cookies, "special")
}
score, err := lib.GetUserScore(cookies)
if err != nil {
log.Errorln("获取成绩失败")
log.Debugln(err.Error())
return
}
message := "学习完成:今日得分:" + strconv.Itoa(score.TodayScore)
core.Push("markdown", message)
}