github.com/bububa/oceanengine/marketing-api@v0.0.0-20210315120513-0b953137f7a6/model/report/video_frame.go (about)

     1  package report
     2  
     3  import (
     4  	"encoding/json"
     5  	"net/url"
     6  	"strconv"
     7  	"time"
     8  
     9  	"github.com/bububa/oceanengine/marketing-api/model"
    10  )
    11  
    12  type VideoFrameRequest struct {
    13  	AdvertiserID uint64              `json:"advertiser_id,omitempty"`
    14  	StartDate    time.Time           `json:"start_date,omitempty"`
    15  	EndDate      time.Time           `json:"end_date,omitempty"`
    16  	Filtering    VideoFrameFiltering `json:"filtering,omitempty"`
    17  	Metrics      []string            `json:"metrics,omitempty"` // 数据指标。数组最大长度限制为5。 默认值: ['click_cnt', 'dy_comment', 'dy_follow', 'dy_like', 'user_lose_cnt']
    18  }
    19  
    20  type VideoFrameFiltering struct {
    21  	MaterialID uint64 `json:"material_id,omitempty"` // 按 素材id 过滤。素材id从上传视频接口的返回值中获取。仅支持单个素材id过滤。
    22  }
    23  
    24  func (r VideoFrameRequest) Encode() string {
    25  	values := &url.Values{}
    26  	values.Set("advertiser_id", strconv.FormatUint(r.AdvertiserID, 10))
    27  	values.Set("start_date", r.StartDate.Format("2006-01-02"))
    28  	values.Set("end_date", r.EndDate.Format("2006-01-02"))
    29  	filtering, _ := json.Marshal(r.Filtering)
    30  	values.Set("filtering", string(filtering))
    31  	if r.Metrics != nil {
    32  		metrics, _ := json.Marshal(r.Metrics)
    33  		values.Set("metrics", string(metrics))
    34  	}
    35  	return values.Encode()
    36  }
    37  
    38  type VideoFrameResponse struct {
    39  	model.BaseResponse
    40  	Data *VideoFrameResponseData `json:"data,omitempty"`
    41  }
    42  
    43  type VideoFrameResponseData struct {
    44  	List []VideoFrameResponseDataList `json:"list,omitempty"`
    45  }
    46  
    47  type VideoFrameResponseDataList struct {
    48  	Metrics *VideoFrameMetrics `json:"metrics,omitempty"` // 指标数据
    49  	Second  int64              `json:"second,omitempty"`  // 秒。指标数据对应的视频时间进度,例如:second=3表示视频第三秒时产生的指标数据
    50  }
    51  
    52  type VideoFrameMetrics struct {
    53  	ClickCnt    int64 `json:"click_cnt,omitempty"`     // 点击数
    54  	DyComment   int64 `json:"dy_comment,omitempty"`    // 新增评论数
    55  	DyFollow    int64 `json:"dy_follow,omitempty"`     // 新增关注数
    56  	DyLike      int64 `json:"dy_like,omitempty"`       // 点赞数
    57  	UserLoseCnt int64 `json:"user_lose_cnt,omitempty"` // 流失人数
    58  }