81 lines
2.5 KiB
Go
81 lines
2.5 KiB
Go
package web
|
|
|
|
import (
|
|
"net/http"
|
|
"strings"
|
|
)
|
|
|
|
// attachTrackerPage 为所有 HTML 页面补齐稳定的 pageKey/pageName,避免事件落入 unknown。
|
|
func attachTrackerPage(path string, code int, data map[string]any) {
|
|
if data == nil {
|
|
return
|
|
}
|
|
key, name := trackerPageFromRequest(path, code)
|
|
if current, _ := data["pageKey"].(string); strings.TrimSpace(current) == "" {
|
|
data["pageKey"] = key
|
|
}
|
|
if current, _ := data["pageName"].(string); strings.TrimSpace(current) == "" {
|
|
data["pageName"] = name
|
|
}
|
|
}
|
|
|
|
func trackerPageFromRequest(path string, code int) (string, string) {
|
|
if code >= http.StatusInternalServerError {
|
|
return "server_error", "服务异常页面"
|
|
}
|
|
if code >= http.StatusBadRequest {
|
|
return "not_found", "404页面"
|
|
}
|
|
return trackerPageFromPath(path)
|
|
}
|
|
|
|
func trackerPageFromPath(path string) (string, string) {
|
|
p := strings.TrimSuffix(strings.TrimSpace(path), "/")
|
|
if p == "" {
|
|
return "home", "首页"
|
|
}
|
|
rules := []struct {
|
|
prefix string
|
|
key string
|
|
name string
|
|
}{
|
|
{"/series-play", "series_play", "AI成人剧集播放页"},
|
|
{"/series", "series", "AI成人剧集"},
|
|
{"/play", "play", "短剧播放页"},
|
|
{"/detail", "detail", "短剧详情"},
|
|
{"/list", "list", "短剧列表"},
|
|
{"/recently-added", "recently_added", "最新短剧"},
|
|
{"/popular-recommend", "popular_recommend", "热门推荐"},
|
|
{"/rank", "rank", "排行榜"},
|
|
{"/topic-detail", "topic_detail", "专题详情"},
|
|
{"/topic", "topic", "专题列表"},
|
|
{"/tags", "tags", "标签详情"},
|
|
{"/more-series-list", "more_series_list", "成人剧集列表"},
|
|
{"/more-list", "more_list", "短剧扩展列表"},
|
|
{"/search-mobile", "search", "搜索结果页"},
|
|
{"/search", "search", "搜索结果页"},
|
|
{"/history", "history", "观看历史"},
|
|
{"/favorites", "favorites", "我的收藏"},
|
|
{"/purchased", "purchased", "已购剧集"},
|
|
{"/profile", "profile", "个人中心"},
|
|
{"/setting", "setting", "设置"},
|
|
{"/recharge", "recharge", "充值中心"},
|
|
{"/download-app", "download_app", "下载APP"},
|
|
{"/feedback", "feedback", "问题反馈"},
|
|
{"/help", "help", "帮助中心"},
|
|
{"/about", "about", "关于我们"},
|
|
{"/terms", "terms", "用户协议"},
|
|
{"/privacy", "privacy", "隐私政策"},
|
|
{"/2257", "compliance_2257", "2257合规声明"},
|
|
{"/dmca", "dmca", "DMCA版权声明"},
|
|
{"/login", "login", "登录"},
|
|
{"/register", "register", "注册"},
|
|
}
|
|
for _, rule := range rules {
|
|
if p == rule.prefix || strings.HasPrefix(p, rule.prefix+"/") {
|
|
return rule.key, rule.name
|
|
}
|
|
}
|
|
return "internal_other", "站内其他页面"
|
|
}
|