package main

import (
	"log"

	"474420502.top/eson/gjson"

	crontab "474420502.top/eson/crontabex"
	"474420502.top/eson/imitater"
	"474420502.top/test/logdb"
)

func main() {
	imitater.Register("toutiao", &TaskEx{})
	person := imitater.NewPerson()
	person.Config("task.yaml")
	person.Execute()
}

// TaskEx 任务相关类
type TaskEx struct {
	imitater.Task
	db *logdb.LogDB
}

// Init 初始化函数
func (te *TaskEx) Init() {
	te.db = logdb.New("../logdb.yaml")
}

// Execute 执行过程的方法
func (te *TaskEx) Execute(glocal map[string]interface{}) imitater.ITask {

	resp, err := te.Request()
	if err != nil {
		log.Println(err)
		return te
	}

	var adDataList []string

	if gjson.Valid(resp.Content()) {
		P := gjson.Parse(resp.Content())
		data := P.Get(`data`)
		if data.Exists() {
			adData := data.Get(`ordered_info.#.ad_data`)
			if adData.Exists() {
				for _, result := range adData.Array() {
					adDataList = append(adDataList, result.String())
				}
			}

			relatedVideo := data.Get(`related_video_toutiao.#[show_tag = "广告"]#`)
			if adData.Exists() {
				for _, result := range relatedVideo.Array() {
					adDataList = append(adDataList, result.String())
				}
			}

		}
	} else {
		log.Println("be careful:", resp.Content())
	}

	if imitater.ADDataSave(te, te.db, adDataList) {
		te.GetCrontab().SetStatus(crontab.SExecuteOK, true)
	} else {
		te.GetCrontab().SetStatus(crontab.SExecuteOK, false)
	}

	return te
}
