196 lines
6.7 KiB
Go
196 lines
6.7 KiB
Go
|
package http
|
||
|
|
||
|
import (
|
||
|
"strconv"
|
||
|
"time"
|
||
|
|
||
|
"go-common/app/interface/main/report-click/model"
|
||
|
"go-common/library/log"
|
||
|
bm "go-common/library/net/http/blademaster"
|
||
|
"go-common/library/net/metadata"
|
||
|
)
|
||
|
|
||
|
// reportPlayer write the archive data.
|
||
|
func reportPlayer(c *bm.Context) {
|
||
|
params := c.Request.Form
|
||
|
header := c.Request.Header
|
||
|
buvid := header.Get("Buvid")
|
||
|
displayid := header.Get("Display-ID")
|
||
|
ts := params.Get("ts")
|
||
|
aid := params.Get("aid")
|
||
|
cid := params.Get("cid")
|
||
|
playedTime := params.Get("played_time")
|
||
|
mid := params.Get("mid")
|
||
|
moAp := params.Get("mobi_app")
|
||
|
typeID := params.Get("type")
|
||
|
subType := params.Get("sub_type")
|
||
|
sid := params.Get("sid")
|
||
|
epid := params.Get("epid")
|
||
|
infocRealTime.Info(ts, buvid, displayid, mid, aid, cid, playedTime, strconv.FormatInt(time.Now().Unix(), 10), "1", moAp, "", typeID, subType, sid, epid, "")
|
||
|
c.JSON(nil, nil)
|
||
|
}
|
||
|
|
||
|
// reportHeartbeat write the archive data.
|
||
|
func reportHeartbeat(c *bm.Context) {
|
||
|
params := c.Request.Form
|
||
|
header := c.Request.Header
|
||
|
buvid := header.Get("Buvid")
|
||
|
displayid := header.Get("Display-ID")
|
||
|
sts := params.Get("start_ts")
|
||
|
aid := params.Get("aid")
|
||
|
if aid == "" {
|
||
|
aid = params.Get("avid")
|
||
|
}
|
||
|
cid := params.Get("cid")
|
||
|
playedTime := params.Get("played_time")
|
||
|
mid := params.Get("mid")
|
||
|
moAp := params.Get("mobi_app")
|
||
|
typeID := params.Get("type")
|
||
|
subType := params.Get("sub_type")
|
||
|
sid := params.Get("sid")
|
||
|
epid := params.Get("epid")
|
||
|
playType := params.Get("play_type")
|
||
|
if playType == "" {
|
||
|
playType = params.Get("playtype")
|
||
|
}
|
||
|
infocRealTime.Info(sts, buvid, displayid, mid, aid, cid, playedTime, strconv.FormatInt(time.Now().Unix(), 10), "2", moAp, "", typeID, subType, sid, epid, playType)
|
||
|
c.JSON(nil, nil)
|
||
|
}
|
||
|
|
||
|
func heartbeatMobile(c *bm.Context) {
|
||
|
params := c.Request.Form
|
||
|
header := c.Request.Header
|
||
|
sts := params.Get("start_ts")
|
||
|
build := params.Get("build")
|
||
|
buvid := header.Get("Buvid")
|
||
|
mobileApp := params.Get("mobi_app")
|
||
|
device := params.Get("device")
|
||
|
platform := params.Get("platform")
|
||
|
session := params.Get("session")
|
||
|
mid := params.Get("mid")
|
||
|
aid := params.Get("aid")
|
||
|
cid := params.Get("cid")
|
||
|
sid := params.Get("sid")
|
||
|
epid := params.Get("epid")
|
||
|
tp := params.Get("type")
|
||
|
subType := params.Get("sub_type")
|
||
|
quality := params.Get("quality")
|
||
|
totalTime := params.Get("total_time")
|
||
|
pausedTime := params.Get("paused_time")
|
||
|
playedTime := params.Get("played_time")
|
||
|
videoDuration := params.Get("video_duration")
|
||
|
playType := params.Get("play_type")
|
||
|
networkType := params.Get("network_type")
|
||
|
playProgressTimeLast := params.Get("last_play_progress_time")
|
||
|
playProgressTimeMax := params.Get("max_play_progress_time")
|
||
|
playMode := params.Get("play_mode")
|
||
|
from := params.Get("from")
|
||
|
epidStatus := params.Get("epid_status")
|
||
|
playStatus := params.Get("play_status")
|
||
|
userStatus := params.Get("user_status")
|
||
|
actualPlayedTime := params.Get("actual_played_time")
|
||
|
autoPlay := params.Get("auto_play")
|
||
|
detailPlayTime := params.Get("detail_play_time")
|
||
|
listPlayTime := params.Get("list_play_time")
|
||
|
userAgent := c.Request.Header.Get("User-Agent")
|
||
|
ts, err := strconv.ParseInt(sts, 10, 64)
|
||
|
if err != nil || ts <= 0 {
|
||
|
ts = time.Now().Unix()
|
||
|
sts = strconv.FormatInt(ts, 10)
|
||
|
}
|
||
|
// NOTE /x/report//heartbeat/mobile auto_play = 2 ===> /x/report/click/android2 & ios
|
||
|
// (自动播放的上报>> 2:天马feed流inline) 播放时长转成播放点击
|
||
|
autoPlayInt, _ := strconv.ParseInt(autoPlay, 10, 64)
|
||
|
fromInt, _ := strconv.ParseInt(from, 10, 64)
|
||
|
videoDurInt, _ := strconv.ParseInt(videoDuration, 10, 64)
|
||
|
playedTimeInt, _ := strconv.ParseInt(playedTime, 10, 64)
|
||
|
var needCompens bool
|
||
|
if (autoPlayInt == 2 || autoPlayInt == 1) && fromMap[fromInt] {
|
||
|
userAgent = userAgent + " (inline_play_to_view)" // change from auto_play to inline_play_heartbeat, then to inline_play_to_view
|
||
|
needCompens = true
|
||
|
}
|
||
|
if (autoPlayInt == 2 || autoPlayInt == 1) && fromInlineMap[fromInt] && playedTimeInt >= inlineDuration && (videoDurInt >= playedTimeInt) {
|
||
|
userAgent += " (played_time_enough)" // new logic, if inline play more than 10s, count it also
|
||
|
needCompens = true
|
||
|
}
|
||
|
if needCompens {
|
||
|
var cookieSid, plat string
|
||
|
if ck, err := c.Request.Cookie("sid"); err == nil {
|
||
|
cookieSid = ck.Value
|
||
|
}
|
||
|
ip := metadata.String(c, metadata.RemoteIP)
|
||
|
switch platform {
|
||
|
case "android":
|
||
|
plat = _platAndroid
|
||
|
case "ios":
|
||
|
plat = _platIos
|
||
|
}
|
||
|
clickSvr.Play(c, plat, aid, cid, params.Get("part"), mid, params.Get("lv"),
|
||
|
"0", sts, buvid, ip, userAgent, buvid,
|
||
|
cookieSid, c.Request.Header.Get("Referer"), tp,
|
||
|
subType, sid, epid, playMode, platform, device, mobileApp, autoPlay, session)
|
||
|
|
||
|
log.Warn("plat:%s,aid:%s,cid:%s,part:%s,mid:%s,lv:%s,0:%s,sts:%s,buvid:%s,ip:%s,userAgent:%s,"+
|
||
|
"buvid:%s,cookieSid:%s,Referer:%s,tp:%s,subType:%s,sid:%s,epid:%s,playMode:%s,"+
|
||
|
"platform:%s,device:%s,mobileApp:%s,autoPlay:%s,session:%s",
|
||
|
plat, aid, cid, params.Get("part"), mid, params.Get("lv"),
|
||
|
"0", sts, buvid, ip, userAgent, buvid,
|
||
|
cookieSid, c.Request.Header.Get("Referer"), tp,
|
||
|
subType, sid, epid, playMode, platform, device, mobileApp, autoPlay, session)
|
||
|
}
|
||
|
buildInt, _ := strconv.ParseInt(build, 10, 64)
|
||
|
clickSvr.SuccReport(c, &model.SuccReport{ // record the success by different build
|
||
|
MobiApp: mobileApp,
|
||
|
Build: buildInt,
|
||
|
})
|
||
|
infocStatistics.Info(sts, build, buvid, mobileApp, platform, session, mid, aid, cid, sid,
|
||
|
epid, tp, subType, quality, totalTime, pausedTime, playedTime, videoDuration,
|
||
|
playType, networkType, playProgressTimeLast, playProgressTimeMax, playMode, device, from, epidStatus, playStatus, userStatus, actualPlayedTime, autoPlay, detailPlayTime, listPlayTime)
|
||
|
data := make(map[string]interface{}, 1)
|
||
|
data["ts"] = ts
|
||
|
c.JSON(data, nil)
|
||
|
}
|
||
|
|
||
|
// webHeartbeat write the archive data.
|
||
|
func webHeartbeat(c *bm.Context) {
|
||
|
var (
|
||
|
buvid, mid, term string
|
||
|
params = c.Request.Form
|
||
|
)
|
||
|
if ck, err := c.Request.Cookie("buvid3"); err == nil {
|
||
|
buvid = ck.Value
|
||
|
}
|
||
|
sts := params.Get("start_ts")
|
||
|
aid := params.Get("aid")
|
||
|
cid := params.Get("cid")
|
||
|
pause := params.Get("pause")
|
||
|
playType := params.Get("play_type")
|
||
|
if playType == "" {
|
||
|
playType = params.Get("playtype")
|
||
|
}
|
||
|
playedTime := params.Get("played_time")
|
||
|
if midI, ok := c.Get("mid"); ok {
|
||
|
mid = strconv.FormatInt(midI.(int64), 10)
|
||
|
}
|
||
|
tp := params.Get("type")
|
||
|
subType := params.Get("sub_type")
|
||
|
sid := params.Get("sid")
|
||
|
if sid == "" {
|
||
|
sid = params.Get("seasonID")
|
||
|
}
|
||
|
epid := params.Get("epid")
|
||
|
dt := params.Get("dt")
|
||
|
if dt == "7" {
|
||
|
// count m.bilibili.com visits times.
|
||
|
term = "h5"
|
||
|
} else {
|
||
|
dt = "2"
|
||
|
term = "web"
|
||
|
}
|
||
|
realtime := params.Get("realtime")
|
||
|
ts := strconv.FormatInt(time.Now().Unix(), 10)
|
||
|
infocRealTime.Info(sts, buvid, "", mid, aid, cid, playedTime, ts, dt, term, pause, tp, subType, sid, epid, playType)
|
||
|
clickSvr.Report(c, playedTime, cid, tp, subType, realtime, aid, mid, sid, epid, dt, ts)
|
||
|
c.JSON(nil, nil)
|
||
|
}
|