完成openrec源的获取.

This commit is contained in:
eson
2020-07-09 17:09:46 +08:00
parent a027861f5a
commit 2e9a803645
5 changed files with 66 additions and 60 deletions

View File

@@ -8,9 +8,11 @@ import (
"time"
"github.com/474420502/hunter"
"github.com/tidwall/gjson"
)
var targetTypeRanking = "openrec_ranking"
var targetTypeUser = "openrec_user"
var openrecRanking *OpenrecRanking
// store 源存储实例, 为存储源数据的实现. 表格具体参考sql/intimate_source.sql
@@ -44,7 +46,6 @@ func (or *OpenrecRanking) Execute(cxt *hunter.TaskContext) {
for {
errorMsg := sql.NullString{Valid: false}
resp, err := cxt.Hunt()
if err != nil {
log.Println(err)
@@ -53,36 +54,34 @@ func (or *OpenrecRanking) Execute(cxt *hunter.TaskContext) {
wf := cxt.Workflow()
data := &intimate.Source{}
content := resp.Content()
if len(content) <= 200 {
return
}
data.SetSource(sql.NullString{String: string(content), Valid: len(content) > 0})
data.SetUrl(wf.GetRawURL())
data.SetTargetType(targetTypeRanking)
result := gjson.ParseBytes(content)
if result.IsArray() {
for _, User := range result.Array() {
data := &intimate.Source{}
userid := User.Get("channel.id").String()
data.SetSource(sql.NullString{String: userid, Valid: len(userid) > 0})
data.SetUrl(wf.GetRawURL())
data.SetTargetType(targetTypeUser)
store.Insert(data)
}
}
querys := wf.GetQuery()
page, err := strconv.Atoi(querys.Get("page"))
if err != nil {
log.Println(err)
errorMsg.String = err.Error()
errorMsg.Valid = true
data.SetErrorMsg(errorMsg)
data.SetOperator(10000)
store.Insert(data)
return
}
page++
querys.Set("page", strconv.Itoa(page))
wf.SetQuery(querys)
data.SetErrorMsg(errorMsg)
store.Insert(data)
time.Sleep(time.Second * 2)
}
}