Initial commit: web_hghl_server
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
// 短剧数据回流 demo。
|
||||
//
|
||||
// 用法:
|
||||
//
|
||||
// go run ./example # 只看将发送的 JSON,不发请求
|
||||
// STUDIO_API_KEY='ld_xxx' go run ./example -send # 真正上报
|
||||
//
|
||||
// 接入时照着这个文件抄:改 records 里的数据,把 main 里的发送逻辑搬进你们自己的任务里。
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
datacenter "videoweb/pub/data_center"
|
||||
)
|
||||
|
||||
// ============================================================
|
||||
// 1. 要上报的数据。一条 = 一个视频在某一天的表现。
|
||||
//
|
||||
// 不用填的(SDK 自动补):
|
||||
// - data_date 数据所属日期 → 当天 UTC 日期
|
||||
// - company 所属公司 → 瑞升
|
||||
// - role_id 角色 ID 数组 → []
|
||||
//
|
||||
// 必须填的(漏了会在本地就报错,不会白跑请求):
|
||||
// - company_platform 所属产品/项目名
|
||||
// - published_data 视频上线时间
|
||||
// - script_name 剧本名称
|
||||
// - drama_name 短剧名称
|
||||
// - drama_no 集数
|
||||
// - video_url 成片下载链接
|
||||
// - platform_url 产品内播放页链接
|
||||
//
|
||||
// 其余都是选填,不填就不会出现在请求体里。
|
||||
// ============================================================
|
||||
var records = []datacenter.Record{
|
||||
{
|
||||
// ---- 必填 ----
|
||||
CompanyPlatform: "黄果短剧", // 你们的产品/项目名
|
||||
PublishedData: "01/09/2026",
|
||||
ScriptName: "剧本A",
|
||||
DramaName: "短剧A",
|
||||
DramaNo: "第1集",
|
||||
VideoURL: "https://cdn.example.com/a.mp4",
|
||||
PlatformURL: "https://example.com/a",
|
||||
|
||||
// ---- 选填,建议填:方便中台把同一条视频的历史数据串起来 ----
|
||||
VideoID: "12345",
|
||||
ScriptID: "S-001",
|
||||
PlatformVideoID: "pv-12345",
|
||||
|
||||
// ---- 数据 ----
|
||||
Views: 10000, // 浏览量
|
||||
Clicks: 8200, // 播放量
|
||||
Likes: 300, // 点赞量
|
||||
|
||||
// ---- 选填,不用就整行删掉 ----
|
||||
// LikeRate: "3.66%", // 点赞量 ÷ 播放量 × 100%
|
||||
// CompletionRate: "43.00%", // 完播率,没单条数据可填剧本整体完播率
|
||||
// PaidRate: "0.00%", // 免费短剧统一 0.00%
|
||||
// CompletionRateScope: "video", // video | script | unknown
|
||||
// Comments: datacenter.Int(14), // 填 0 也会正常发出,删掉则不发这个字段
|
||||
// Shares: datacenter.Int(0),
|
||||
},
|
||||
// 想一次发多条就继续往这里加,SDK 会打包成一个请求发出去。
|
||||
// {
|
||||
// CompanyPlatform: "黄果短剧",
|
||||
// ...
|
||||
// },
|
||||
}
|
||||
|
||||
func main() {
|
||||
send := flag.Bool("send", false, "真正 POST。默认只打印 JSON")
|
||||
flag.Parse()
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 第 1 步:本地核对。打印补齐默认值之后最终会发出的 JSON。
|
||||
// ------------------------------------------------------------
|
||||
body, err := datacenter.JSON(records...)
|
||||
if err != nil {
|
||||
fatal(err)
|
||||
}
|
||||
fmt.Println(string(body))
|
||||
|
||||
if !*send {
|
||||
fmt.Println("\n未发送。确认无误后执行:")
|
||||
fmt.Println(" STUDIO_API_KEY='ld_...' go run ./example -send")
|
||||
return
|
||||
}
|
||||
|
||||
// ------------------------------------------------------------
|
||||
// 第 2 步:异步上报。
|
||||
//
|
||||
// SendAsync 把数据丢进内存队列就立即返回,HTTP 请求在后台发,
|
||||
// 不会拖慢你们的主流程(接口 handler、定时任务都适用)。
|
||||
//
|
||||
// 两条铁律:
|
||||
// 1. 失败不会返回给你,用 OnError 接住写日志。
|
||||
// 2. 进程退出前必须 Close(),否则队列里的数据会丢。
|
||||
// ------------------------------------------------------------
|
||||
client := datacenter.New(os.Getenv("STUDIO_API_KEY")) // 创建一次,全程复用
|
||||
|
||||
client.OnError = func(err error) {
|
||||
// 漏填字段、网络失败、队列满被丢弃,都会走到这里。
|
||||
fmt.Fprintln(os.Stderr, "上报失败:", err)
|
||||
}
|
||||
|
||||
client.SendAsync(records...) // 立即返回,不阻塞
|
||||
|
||||
client.Close() // 等队列里的数据发完再退出
|
||||
fmt.Println("\n上报完成")
|
||||
}
|
||||
|
||||
func fatal(err error) {
|
||||
fmt.Fprintln(os.Stderr, err)
|
||||
os.Exit(1)
|
||||
}
|
||||
Reference in New Issue
Block a user