fix: 时间校准接口全局复用旧 peace/storedetail,修正活动名称
- 从 Activity 结构体移除 TimeAPIURL 字段,时间校准与活动无关, 统一用 constants.DefaultTimeAPI(peace/storedetail 能稳定返回 currentTime) - 旧活动 peace DisplayName 从"和平手册"修正为"精英手册" - 更改项目默认端口避免冲突:Vite 5173→15173,Wails dev 34115→34215
This commit is contained in:
@@ -625,7 +625,7 @@ func (a *App) SwitchActivity(id string) map[string]any {
|
||||
return map[string]any{"success": false, "error": "未知活动: " + id}
|
||||
}
|
||||
a.cfg.Activity = act.ID
|
||||
a.cfg.TimeAPIURL = act.TimeAPIURL
|
||||
a.cfg.TimeAPIURL = constants.DefaultTimeAPI
|
||||
if err := config.SaveConfig(a.paths.ConfigFile, a.cfg); err != nil {
|
||||
logger.LogEvent("活动", "error", "切换活动配置保存失败: %v", err)
|
||||
return map[string]any{"success": false, "error": "配置保存失败: " + err.Error()}
|
||||
|
||||
@@ -15,6 +15,7 @@ export default defineConfig({
|
||||
sourcemap: false
|
||||
},
|
||||
server: {
|
||||
port: 15173,
|
||||
strictPort: true
|
||||
}
|
||||
})
|
||||
|
||||
@@ -4,7 +4,7 @@ import "douyu_go/internal/constants"
|
||||
|
||||
// Activity 描述一个斗鱼手册活动的全部接口参数。
|
||||
//
|
||||
// 不同活动(和平手册 / 电竞手册)的 manualID、roomID、actAlias 以及接口路径段都不同,
|
||||
// 不同活动(精英手册 / 电竞手册)的 manualID、roomID、actAlias 以及接口路径段都不同,
|
||||
// 集中在这里可以让调度核心逻辑保持活动无关,新增活动只需在 registry 中加一项。
|
||||
//
|
||||
// 注意:peacematch 的 exchange / preExchange / batchExchangeLimit / storedetail 端点
|
||||
@@ -21,8 +21,6 @@ type Activity struct {
|
||||
BaseURL string
|
||||
ShopReferer string
|
||||
|
||||
TimeAPIURL string // 服务端时间校准接口(storedetail)
|
||||
|
||||
StoreHomeURL string
|
||||
CSRFURL string
|
||||
|
||||
@@ -38,16 +36,15 @@ type Activity struct {
|
||||
|
||||
const douyuBase = constants.BaseURL
|
||||
|
||||
// peace 和平手册(旧活动,ActAlias=20260120QYOOB)。
|
||||
// peace 精英手册(旧活动,ActAlias=20260120QYOOB)。
|
||||
var peace = &Activity{
|
||||
ID: "peace",
|
||||
DisplayName: "和平手册",
|
||||
DisplayName: "精英手册",
|
||||
ManualID: "G4KA4Qnz4LDp7",
|
||||
RoomID: "9263298",
|
||||
ActAlias: "20260120QYOOB",
|
||||
BaseURL: douyuBase,
|
||||
ShopReferer: douyuBase + "/pages/live-peace-handbook/web/shop?ditchname=pass0&roomId=9263298",
|
||||
TimeAPIURL: douyuBase + "/wgapi/ordnc/activity/peace/storedetail?manualID=G4KA4Qnz4LDp7&commodityID=20260120QYOOB_bag274&rid=9263298",
|
||||
StoreHomeURL: douyuBase + "/wgapi/ordnc/activity/peace/storehome?manualID=G4KA4Qnz4LDp7&rid=9263298",
|
||||
CSRFURL: douyuBase + "/japi/carnival/nc/common/generateCsrf",
|
||||
BatchLimitURL: douyuBase + "/wgapi/ordnc/activity/peace/batchExchangeLimit",
|
||||
@@ -69,7 +66,6 @@ var peacematch = &Activity{
|
||||
ActAlias: "20260226ZMGDG",
|
||||
BaseURL: douyuBase,
|
||||
ShopReferer: douyuBase + "/pages/live-peace-pel/web/shop?roomId=9263298&isAnchorSide=0",
|
||||
TimeAPIURL: douyuBase + "/wgapi/ordnc/activity/peacematch/storedetail?manualID=1W0yGkOdDbAXb&commodityID=20260226ZMGDG_bag139&rid=9263298",
|
||||
StoreHomeURL: douyuBase + "/wgapi/ordnc/activity/peacematch/storehome?manualID=1W0yGkOdDbAXb&rid=9263298",
|
||||
// generateCsrf 为嘉年华平台级接口,抓包未单独出现,沿用 peace 同款端点。
|
||||
CSRFURL: douyuBase + "/japi/carnival/nc/common/generateCsrf",
|
||||
@@ -91,7 +87,7 @@ var registry = map[string]*Activity{
|
||||
// DefaultActivityID 默认活动,新分支默认启用「电竞手册」。
|
||||
const DefaultActivityID = "peacematch"
|
||||
|
||||
// List 返回所有注册活动,按注册顺序(和平手册在前)。
|
||||
// List 返回所有注册活动,按注册顺序(精英手册在前)。
|
||||
func List() []*Activity {
|
||||
return []*Activity{peace, peacematch}
|
||||
}
|
||||
|
||||
@@ -29,13 +29,13 @@ type DouyuClient struct {
|
||||
}
|
||||
|
||||
// New 创建斗鱼客户端。act 决定使用哪个活动的接口参数;
|
||||
// timeAPIURL 为空时回退到 act.TimeAPIURL。
|
||||
// timeAPIURL 为空时回退到 constants.DefaultTimeAPI(全局共享的服务端时间接口)。
|
||||
func New(act *activity.Activity, timeAPIURL string, tr *trace.Recorder) *DouyuClient {
|
||||
if act == nil {
|
||||
act = activity.Default()
|
||||
}
|
||||
if timeAPIURL == "" {
|
||||
timeAPIURL = act.TimeAPIURL
|
||||
timeAPIURL = constants.DefaultTimeAPI
|
||||
}
|
||||
return &DouyuClient{
|
||||
Activity: act,
|
||||
|
||||
@@ -77,7 +77,7 @@ func envInt(key string, fallback int) int {
|
||||
func defaultConfig() types.Config {
|
||||
return types.Config{
|
||||
Activity: activity.DefaultActivityID,
|
||||
TimeAPIURL: activity.Default().TimeAPIURL,
|
||||
TimeAPIURL: constants.DefaultTimeAPI,
|
||||
TraceEnabled: false,
|
||||
TraceMaxBody: 0,
|
||||
LogLevel: "info",
|
||||
@@ -124,9 +124,7 @@ func LoadConfig(path string) types.Config {
|
||||
cfg.Activity = activity.DefaultActivityID
|
||||
}
|
||||
if cfg.TimeAPIURL == "" {
|
||||
if act := activity.Get(cfg.Activity); act != nil {
|
||||
cfg.TimeAPIURL = act.TimeAPIURL
|
||||
}
|
||||
cfg.TimeAPIURL = constants.DefaultTimeAPI
|
||||
}
|
||||
if cfg.Concurrency <= 0 {
|
||||
cfg.Concurrency = constants.DefaultConcurrency
|
||||
|
||||
@@ -19,6 +19,11 @@ const (
|
||||
DefaultAccountFile = "data/user.txt"
|
||||
DefaultLogDir = "logs"
|
||||
DefaultSuccessDir = "success_images"
|
||||
|
||||
// DefaultTimeAPI 服务端时间校准接口。
|
||||
// 斗鱼服务器时间与活动无关,统一用精英手册的 storedetail(能稳定返回
|
||||
// data.preExchange.currentTime),所有活动共用。
|
||||
DefaultTimeAPI = BaseURL + "/wgapi/ordnc/activity/peace/storedetail?manualID=G4KA4Qnz4LDp7&commodityID=20260120QYOOB_bag274&rid=9263298"
|
||||
)
|
||||
|
||||
// CST 中国标准时间 UTC+8。
|
||||
|
||||
+2
-1
@@ -7,7 +7,8 @@
|
||||
"frontend:install": "npm install",
|
||||
"frontend:build": "npm run build",
|
||||
"frontend:dev:watcher": "npm run dev",
|
||||
"frontend:dev:serverUrl": "auto",
|
||||
"frontend:dev:serverUrl": "http://localhost:15173",
|
||||
"devserver": "localhost:34215",
|
||||
"wailsjsdir": "frontend",
|
||||
"author": {
|
||||
"name": "yml",
|
||||
|
||||
Reference in New Issue
Block a user