parent
d41bba79b6
commit
f73ec27d46
|
@ -1,6 +1,9 @@
|
|||
name: docker build
|
||||
|
||||
on: [push, pull_request]
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
|
||||
env:
|
||||
BINARY_PREFIX: "study_xxqg_"
|
||||
|
@ -34,5 +37,5 @@ jobs:
|
|||
ls -R
|
||||
pwd
|
||||
docker build -t jolanse/study_xxqg ./
|
||||
docker push jolanse/study_xxqg
|
||||
docker push jolanse/study_xxqg:${{github.ref}}
|
||||
|
||||
|
|
|
@ -54,6 +54,12 @@ type Config struct {
|
|||
// 重试时间
|
||||
Intervals int `json:"intervals" yaml:"intervals"`
|
||||
} `json:"retry" yaml:"retry"`
|
||||
|
||||
Wechat struct {
|
||||
Token string `json:"token" yaml:"token"`
|
||||
Secret string `json:"secret" yaml:"secret"`
|
||||
AppID string `json:"app_id" yaml:"app_id"`
|
||||
} `json:"wechat" yaml:"wechat"`
|
||||
// 专项答题可接受的最小值
|
||||
SpecialMinScore int `json:"special_min_score" yaml:"special_min_score"`
|
||||
|
||||
|
|
11
go.mod
11
go.mod
|
@ -29,18 +29,25 @@ require (
|
|||
)
|
||||
|
||||
require (
|
||||
github.com/beevik/etree v1.1.0 // indirect
|
||||
github.com/codegangsta/negroni v1.0.0 // indirect
|
||||
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 // indirect
|
||||
github.com/gin-contrib/sse v0.1.0 // indirect
|
||||
github.com/go-playground/locales v0.13.0 // indirect
|
||||
github.com/go-playground/universal-translator v0.17.0 // indirect
|
||||
github.com/go-playground/validator/v10 v10.5.0 // indirect
|
||||
github.com/goincremental/negroni-sessions v0.0.0-20171223143234-40b49004abee // indirect
|
||||
github.com/golang/protobuf v1.5.2 // indirect
|
||||
github.com/gorilla/context v1.1.1 // indirect
|
||||
github.com/gorilla/securecookie v1.1.1 // indirect
|
||||
github.com/gorilla/sessions v1.2.1 // indirect
|
||||
github.com/gorilla/websocket v1.4.2 // indirect
|
||||
github.com/hashicorp/errwrap v1.0.0 // indirect
|
||||
github.com/hashicorp/go-multierror v1.1.1 // indirect
|
||||
github.com/huoxue1/lorca v0.1.11 // indirect
|
||||
github.com/jonboulle/clockwork v0.2.2 // indirect
|
||||
github.com/json-iterator/go v1.1.10 // indirect
|
||||
github.com/julienschmidt/httprouter v1.3.0 // indirect
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect
|
||||
github.com/leodido/go-urn v1.2.1 // indirect
|
||||
github.com/lestrrat-go/strftime v1.0.5 // indirect
|
||||
|
@ -51,9 +58,13 @@ require (
|
|||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 // indirect
|
||||
github.com/rosbit/go-wget v1.2.5 // indirect
|
||||
github.com/rosbit/go-wx-api v0.5.0 // indirect
|
||||
github.com/tidwall/match v1.1.1 // indirect
|
||||
github.com/tidwall/pretty v1.2.0 // indirect
|
||||
github.com/ugorji/go/codec v1.2.5 // indirect
|
||||
github.com/urfave/negroni v1.0.0 // indirect
|
||||
github.com/yujinliang/wechat v0.0.0-20220623135211-fb0809eeece2 // indirect
|
||||
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3 // indirect
|
||||
golang.org/x/mod v0.3.0 // indirect
|
||||
golang.org/x/net v0.0.0-20220111093109-d55c255bac03 // indirect
|
||||
|
|
22
go.sum
22
go.sum
|
@ -1,5 +1,9 @@
|
|||
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f h1:2dk3eOnYllh+wUOuDhOoC2vUVoJF/5z478ryJ+wzEII=
|
||||
github.com/Baozisoftware/qrcode-terminal-go v0.0.0-20170407111555-c0650d8dff0f/go.mod h1:4a58ifQTEe2uwwsaqbh3i2un5/CBPg+At/qHpt18Tmk=
|
||||
github.com/beevik/etree v1.1.0 h1:T0xke/WvNtMoCqgzPhkX2r4rjY3GDZFi+FjpRZY2Jbs=
|
||||
github.com/beevik/etree v1.1.0/go.mod h1:r8Aw8JqVegEf0w2fDnATrX9VpkMcyFeM0FhwO62wh+A=
|
||||
github.com/codegangsta/negroni v1.0.0 h1:+aYywywx4bnKXWvoWtRfJ91vC59NbEhEY03sZjQhbVY=
|
||||
github.com/codegangsta/negroni v1.0.0/go.mod h1:v0y3T5G7Y1UlFfyxFn/QLRU4a2EuNau2iZY63YTKWo0=
|
||||
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964 h1:y5HC9v93H5EPKqaS1UYVg1uYah5Xf51mBfIoWehClUQ=
|
||||
github.com/danwakefield/fnmatch v0.0.0-20160403171240-cbb64ac3d964/go.mod h1:Xd9hchkHSWYkEqJwUGisez3G1QY8Ryz0sdWrLPMGjLk=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
|
@ -23,6 +27,8 @@ github.com/go-playground/validator/v10 v10.5.0 h1:X9rflw/KmpACwT8zdrm1upefpvdy6u
|
|||
github.com/go-playground/validator/v10 v10.5.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.4.0-beta.0 h1:mbEDV1g6RBzKd4sFjOWuyZdxItw4CWu5Kq4KaBAJbHM=
|
||||
github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.4.0-beta.0/go.mod h1:5+h9c5l1Z/+Pi+5boa1Fmr4Q+FImsXYnifor92ljaVs=
|
||||
github.com/goincremental/negroni-sessions v0.0.0-20171223143234-40b49004abee h1:aBLa9mJSmSV0I7vZrb+jMakH/B5rR+mRI6Q/DxQ+O7g=
|
||||
github.com/goincremental/negroni-sessions v0.0.0-20171223143234-40b49004abee/go.mod h1:32Cq/6avji0Xp32YipwaOV3PsvpGfuYKTJP9XJrdXe8=
|
||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
||||
github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw=
|
||||
|
@ -34,6 +40,12 @@ github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/
|
|||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
|
||||
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/gorilla/context v1.1.1 h1:AWwleXJkX/nhcU9bZSnZoi3h/qGYqQAGhq6zZe/aQW8=
|
||||
github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg=
|
||||
github.com/gorilla/securecookie v1.1.1 h1:miw7JPhV+b/lAHSXz4qd/nN9jRiAFV5FwjeKyCS8BvQ=
|
||||
github.com/gorilla/securecookie v1.1.1/go.mod h1:ra0sb63/xPlUeL+yeDciTfxMRAA+MP+HVt/4epWDjd4=
|
||||
github.com/gorilla/sessions v1.2.1 h1:DHd3rPN5lE3Ts3D8rKkQ8x/0kqfeNmBAaiSi+o7FsgI=
|
||||
github.com/gorilla/sessions v1.2.1/go.mod h1:dk2InVEVJ0sfLlnXv9EAgkf6ecYs/i80K/zI+bUmuGM=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/guonaihong/gout v0.2.9 h1:8nU5hrtwP1qDwiadFvU+D+z3ud9WEk8iPSfxQDiebng=
|
||||
|
@ -52,6 +64,8 @@ github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUB
|
|||
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
|
||||
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
github.com/julienschmidt/httprouter v1.3.0 h1:U0609e9tgbseu3rBINet9P48AI/D3oJs4dN7jwJOQ1U=
|
||||
github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM=
|
||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA=
|
||||
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
|
||||
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
|
||||
|
@ -101,6 +115,10 @@ github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6O
|
|||
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||
github.com/robfig/cron/v3 v3.0.0 h1:kQ6Cb7aHOHTSzNVNEhmp8EcWKLb4CbiMW9h9VyIhO4E=
|
||||
github.com/robfig/cron/v3 v3.0.0/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro=
|
||||
github.com/rosbit/go-wget v1.2.5 h1:XQFUwTJR8HDwYvxYH8X0cq3BkN1BOMoADc92KKp9Pcs=
|
||||
github.com/rosbit/go-wget v1.2.5/go.mod h1:8Tt92GKM/K9WI65yYkX0lwJDnRp64Vd082ojViWT6T4=
|
||||
github.com/rosbit/go-wx-api v0.5.0 h1:aAjTHCd2o3b14O0JYx2b+qzbZh8ThlKWMD+QsQEK9vQ=
|
||||
github.com/rosbit/go-wx-api v0.5.0/go.mod h1:+HyYx6Avz1sPXTN+JBGyW1mf/jToDkXoNZXHX7S2F8I=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE=
|
||||
github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||
|
@ -128,7 +146,11 @@ github.com/ugorji/go v1.2.5/go.mod h1:gat2tIT8KJG8TVI8yv77nEO/KYT6dV7JE1gfUa8Xul
|
|||
github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY=
|
||||
github.com/ugorji/go/codec v1.2.5 h1:8WobZKAk18Msm2CothY2jnztY56YVY8kF1oQrj21iis=
|
||||
github.com/ugorji/go/codec v1.2.5/go.mod h1:QPxoTbPKSEAlAHPYt02++xp/en9B/wUdwFCz+hj5caA=
|
||||
github.com/urfave/negroni v1.0.0 h1:kIimOitoypq34K7TG7DUaJ9kq/N4Ofuwi1sjz0KipXc=
|
||||
github.com/urfave/negroni v1.0.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yujinliang/wechat v0.0.0-20220623135211-fb0809eeece2 h1:beflFd/e1LnYqtB9cDPEmc1NNV4GvdWzRFtKp9+o/HQ=
|
||||
github.com/yujinliang/wechat v0.0.0-20220623135211-fb0809eeece2/go.mod h1:Rv+LwiyfMMdSkJP5Kt+8QmcXlufGNcR+D6yz21gI2eM=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
|
|
31
lib/core.go
31
lib/core.go
|
@ -36,7 +36,6 @@ import (
|
|||
type Core struct {
|
||||
pw *playwright.Playwright
|
||||
browser playwright.Browser
|
||||
context *playwright.BrowserContext
|
||||
ShowBrowser bool
|
||||
Push func(kind string, message string)
|
||||
}
|
||||
|
@ -255,12 +254,11 @@ func (c *Core) L(retryTimes int) (*model.User, error) {
|
|||
}
|
||||
if retryTimes == 0 {
|
||||
return nil, errors.New("time out")
|
||||
} else {
|
||||
// 等待几分钟后重新执行
|
||||
time.Sleep(time.Duration(conf.GetConfig().Retry.Intervals) * time.Minute)
|
||||
c.Push("text", fmt.Sprintf("登录超时,将进行第%d重新次登录", retryTimes))
|
||||
return c.L(retryTimes - 1)
|
||||
}
|
||||
// 等待几分钟后重新执行
|
||||
time.Sleep(time.Duration(conf.GetConfig().Retry.Intervals) * time.Minute)
|
||||
c.Push("text", fmt.Sprintf("登录超时,将进行第%d重新次登录", retryTimes))
|
||||
return c.L(retryTimes - 1)
|
||||
}
|
||||
|
||||
func (c *Core) initWindows() {
|
||||
|
@ -319,14 +317,6 @@ func (c *Core) initWindows() {
|
|||
}
|
||||
|
||||
c.browser = browser
|
||||
|
||||
context, err := c.browser.NewContext()
|
||||
_ = context.AddInitScript(playwright.BrowserContextAddInitScriptOptions{
|
||||
Script: playwright.String("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});")})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
c.context = &context
|
||||
}
|
||||
|
||||
func (c *Core) initNotWindows() {
|
||||
|
@ -389,21 +379,10 @@ func (c *Core) initNotWindows() {
|
|||
return
|
||||
}
|
||||
c.browser = browser
|
||||
context, err := c.browser.NewContext()
|
||||
_ = context.AddInitScript(playwright.BrowserContextAddInitScriptOptions{
|
||||
Script: playwright.String("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});")})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
c.context = &context
|
||||
}
|
||||
|
||||
func (c *Core) Quit() {
|
||||
err := (*c.context).Close()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = c.browser.Close()
|
||||
err := c.browser.Close()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -44,20 +44,32 @@ func (c *Core) RespondDaily(user *model.User, model string) {
|
|||
return
|
||||
}
|
||||
|
||||
page, err := (*c.context).NewPage()
|
||||
context, err := c.browser.NewContext()
|
||||
_ = context.AddInitScript(playwright.BrowserContextAddInitScriptOptions{
|
||||
Script: playwright.String("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});")})
|
||||
if err != nil {
|
||||
log.Errorln("创建实例对象错误" + err.Error())
|
||||
return
|
||||
}
|
||||
defer func(context playwright.BrowserContext) {
|
||||
err := context.Close()
|
||||
if err != nil {
|
||||
log.Errorln("错误的关闭了实例对象" + err.Error())
|
||||
}
|
||||
}(context)
|
||||
|
||||
page, err := context.NewPage()
|
||||
if err != nil {
|
||||
log.Errorln("创建页面失败" + err.Error())
|
||||
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
page.Close()
|
||||
}()
|
||||
log.Infoln(user.ToBrowserCookies())
|
||||
err = (*c.context).AddCookies(user.ToBrowserCookies()...)
|
||||
|
||||
err = context.AddCookies(user.ToBrowserCookies()...)
|
||||
if err != nil {
|
||||
log.Errorln(err.Error())
|
||||
log.Errorln("添加cookie信息失败,已退出答题")
|
||||
log.Errorln("添加cookie失败" + err.Error())
|
||||
return
|
||||
}
|
||||
_, _ = page.Goto("https://pc.xuexi.cn/points/my-points.html")
|
||||
|
|
|
@ -39,7 +39,7 @@ func GetUserScore(cookies []*http.Cookie) (Score, error) {
|
|||
if !gjson.GetBytes(resp, "ok").Bool() {
|
||||
return Score{}, errors.New("token check failed")
|
||||
}
|
||||
log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
// log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
score.TotalScore = int(gjson.GetBytes(resp, "data.score").Int())
|
||||
|
||||
// 获取用户今日得分
|
||||
|
@ -51,7 +51,7 @@ func GetUserScore(cookies []*http.Cookie) (Score, error) {
|
|||
|
||||
return Score{}, err
|
||||
}
|
||||
log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
// log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
score.TodayScore = int(gjson.GetBytes(resp, "data.score").Int())
|
||||
|
||||
err = gout.GET(user_rateScore_url).SetCookies(cookies...).SetHeader(gout.H{
|
||||
|
@ -61,7 +61,7 @@ func GetUserScore(cookies []*http.Cookie) (Score, error) {
|
|||
log.Errorln("获取用户积分出现错误" + err.Error())
|
||||
return Score{}, err
|
||||
}
|
||||
log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
// log.Debugln(gjson.GetBytes(resp, "@this|@pretty"))
|
||||
datas := gjson.GetBytes(resp, "data.taskProgress").Array()
|
||||
m := make(map[string]Data, 7)
|
||||
m["article"] = Data{
|
||||
|
|
49
lib/study.go
49
lib/study.go
|
@ -114,7 +114,22 @@ func (c *Core) LearnArticle(user *model.User) {
|
|||
links, _ := getLinks("article")
|
||||
if score.Content["article"].CurrentScore < score.Content["article"].MaxScore {
|
||||
log.Infoln("开始加载文章学习模块")
|
||||
page, err := (*c.context).NewPage()
|
||||
|
||||
context, err := c.browser.NewContext()
|
||||
_ = context.AddInitScript(playwright.BrowserContextAddInitScriptOptions{
|
||||
Script: playwright.String("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});")})
|
||||
if err != nil {
|
||||
log.Errorln("创建实例对象错误" + err.Error())
|
||||
return
|
||||
}
|
||||
defer func(context playwright.BrowserContext) {
|
||||
err := context.Close()
|
||||
if err != nil {
|
||||
log.Errorln("错误的关闭了实例对象" + err.Error())
|
||||
}
|
||||
}(context)
|
||||
|
||||
page, err := context.NewPage()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -122,7 +137,7 @@ func (c *Core) LearnArticle(user *model.User) {
|
|||
page.Close()
|
||||
}()
|
||||
|
||||
err = (*c.context).AddCookies(user.ToBrowserCookies()...)
|
||||
err = context.AddCookies(user.ToBrowserCookies()...)
|
||||
if err != nil {
|
||||
log.Errorln("添加cookie失败" + err.Error())
|
||||
return
|
||||
|
@ -209,27 +224,29 @@ func (c *Core) LearnVideo(user *model.User) {
|
|||
// core := Core{}
|
||||
// core.Init()
|
||||
|
||||
page, err := (*c.context).NewPage()
|
||||
context, err := c.browser.NewContext()
|
||||
_ = context.AddInitScript(playwright.BrowserContextAddInitScriptOptions{
|
||||
Script: playwright.String("Object.defineProperties(navigator, {webdriver:{get:()=>undefined}});")})
|
||||
if err != nil {
|
||||
log.Errorln("创建实例对象错误" + err.Error())
|
||||
return
|
||||
}
|
||||
defer func(context playwright.BrowserContext) {
|
||||
err := context.Close()
|
||||
if err != nil {
|
||||
log.Errorln("错误的关闭了实例对象" + err.Error())
|
||||
}
|
||||
}(context)
|
||||
|
||||
page, err := context.NewPage()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
page.Close()
|
||||
}()
|
||||
var resp string
|
||||
err = gout.GET("http://1.15.144.22/stealth.min.js").BindBody(&resp).Do()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
err = page.AddInitScript(playwright.PageAddInitScriptOptions{
|
||||
Script: playwright.String(resp),
|
||||
Path: nil,
|
||||
})
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = (*c.context).AddCookies(user.ToBrowserCookies()...)
|
||||
err = context.AddCookies(user.ToBrowserCookies()...)
|
||||
if err != nil {
|
||||
log.Errorln("添加cookie失败" + err.Error())
|
||||
return
|
||||
|
|
|
@ -161,7 +161,6 @@ func login(bot *Telegram, args []string) {
|
|||
core := Core{
|
||||
pw: nil,
|
||||
browser: nil,
|
||||
context: nil,
|
||||
ShowBrowser: config.ShowBrowser,
|
||||
Push: func(kind string, message string) {
|
||||
switch {
|
||||
|
@ -219,7 +218,6 @@ func studyAll(bot *Telegram, args []string) {
|
|||
core := Core{
|
||||
pw: nil,
|
||||
browser: nil,
|
||||
context: nil,
|
||||
ShowBrowser: config.ShowBrowser,
|
||||
Push: func(kind string, message string) {
|
||||
switch {
|
||||
|
@ -313,7 +311,6 @@ func study(bot *Telegram, args []string) {
|
|||
core := Core{
|
||||
pw: nil,
|
||||
browser: nil,
|
||||
context: nil,
|
||||
ShowBrowser: config.ShowBrowser,
|
||||
Push: func(kind string, message string) {
|
||||
switch {
|
||||
|
|
22
main.go
22
main.go
|
@ -4,6 +4,7 @@ import (
|
|||
"flag"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
|
@ -95,7 +96,10 @@ func main() {
|
|||
if config.Web.Enable {
|
||||
engine := web.RouterInit()
|
||||
go func() {
|
||||
err := engine.Run(fmt.Sprintf("%s:%d", config.Web.Host, config.Web.Port))
|
||||
h := http.NewServeMux()
|
||||
h.Handle("/", engine)
|
||||
//h.HandleFunc("/wx", web.HandleWechat)
|
||||
err := http.ListenAndServe(fmt.Sprintf("%s:%d", config.Web.Host, config.Web.Port), h)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
@ -186,9 +190,17 @@ func do(m string) {
|
|||
var user *model.User
|
||||
users, _ := model.Query()
|
||||
study := func(core2 *lib.Core, u *model.User) {
|
||||
go core2.LearnArticle(u)
|
||||
go core2.LearnVideo(u)
|
||||
lib.WaitStudy(u, "")
|
||||
|
||||
defer func() {
|
||||
err := recover()
|
||||
if err != nil {
|
||||
log.Errorln("学习过程异常")
|
||||
log.Errorln(err)
|
||||
}
|
||||
}()
|
||||
|
||||
core2.LearnArticle(u)
|
||||
core2.LearnVideo(u)
|
||||
if config.Model == 2 {
|
||||
core2.RespondDaily(u, "daily")
|
||||
} else if config.Model == 3 {
|
||||
|
@ -205,7 +217,7 @@ func do(m string) {
|
|||
message := u.Nick + " 学习完成:今日得分:" + strconv.Itoa(score.TodayScore)
|
||||
score, _ = lib.GetUserScore(user.ToCookies())
|
||||
content := lib.FormatScore(score)
|
||||
err = push.PushMessage(user.Nick+"学习情况", content, "score", user.PushId)
|
||||
err = push.PushMessage(user.Nick+"学习情况", user.Nick+"学习情况"+content, "score", user.PushId)
|
||||
if err != nil {
|
||||
log.Errorln(err.Error())
|
||||
err = nil
|
||||
|
|
|
@ -94,7 +94,7 @@ func getScore() gin.HandlerFunc {
|
|||
ctx.JSON(200, Resp{
|
||||
Code: 200,
|
||||
Message: "获取成功",
|
||||
Data: lib.PrintScore(score),
|
||||
Data: lib.FormatScore(score),
|
||||
Success: true,
|
||||
Error: "",
|
||||
})
|
||||
|
@ -215,7 +215,7 @@ func study() gin.HandlerFunc {
|
|||
uid := ctx.Query("uid")
|
||||
user := model.Find(uid)
|
||||
core := &lib.Core{
|
||||
ShowBrowser: false,
|
||||
ShowBrowser: conf.GetConfig().ShowBrowser,
|
||||
Push: func(kind, message string) {
|
||||
},
|
||||
}
|
||||
|
|
|
@ -20,6 +20,10 @@ func RouterInit() *gin.Engine {
|
|||
router := gin.Default()
|
||||
router.Use(Cors())
|
||||
|
||||
router.Group("/wx", func(context *gin.Context) {
|
||||
|
||||
})
|
||||
|
||||
router.StaticFS("/static", http.FS(static))
|
||||
router.GET("/", func(ctx *gin.Context) {
|
||||
ctx.Redirect(301, "/static/xxqg/build/home.html")
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
package web
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
log "github.com/sirupsen/logrus"
|
||||
"github.com/yujinliang/wechat/mp"
|
||||
"github.com/yujinliang/wechat/mp/request"
|
||||
|
||||
"github.com/huoxue1/study_xxqg/conf"
|
||||
)
|
||||
|
||||
func init() {
|
||||
//InitWechat()
|
||||
}
|
||||
|
||||
var (
|
||||
wx *mp.WeiXin
|
||||
)
|
||||
|
||||
func InitWechat() {
|
||||
config := conf.GetConfig()
|
||||
log.Infoln(config.Wechat)
|
||||
wx = mp.New(config.Wechat.Token, config.Wechat.AppID, config.Wechat.Secret, "123", "123")
|
||||
wx.CreateMenu(&mp.Menu{Buttons: []mp.MenuButton{
|
||||
{
|
||||
Name: "登录",
|
||||
Type: "click",
|
||||
Key: "login",
|
||||
Url: "",
|
||||
MediaId: "",
|
||||
SubButtons: nil,
|
||||
},
|
||||
}})
|
||||
wx.HandleFunc("eventCLICK", func(wx *mp.WeiXin, w http.ResponseWriter, r *request.WeiXinRequest, timestamp, nonce string) {
|
||||
log.Infoln(r.EventKey)
|
||||
})
|
||||
}
|
||||
|
||||
func HandleWechat(rep http.ResponseWriter, req *http.Request) {
|
||||
wx.ServeHTTP(rep, req)
|
||||
}
|
Loading…
Reference in New Issue