|
|
| 第1行: |
第1行: |
| -- Module:ArtsData/source —— 唯一 XBDB 访问层(决策11)
| |
| -- ⚠ 探测结论(2026-10-08,README §3.3):pc_arts 可达;pc_arts_ms 与 grow_arts_* 均返回
| |
| -- HTTP 500 未注册。故 desc/AP 走静态表,fetchDesc/fetchApTable 预留 nil 待站长开放后接入。
| |
| -- row_id 越界/多 ID 会整页 500 且 pcall 无效,白名单校验必须前置。
| |
|
| |
|
| local p = {}
| |
|
| |
| local post = require("Module:RequestHelper").post
| |
|
| |
| local lv1 = require("Module:ArtsData/lv1")
| |
| local VALID_IDS = {}
| |
| for _, role in pairs(lv1.roles) do
| |
| for _, id in ipairs(role.ids) do
| |
| VALID_IDS[id] = true
| |
| end
| |
| end
| |
|
| |
| local cache = {}
| |
|
| |
| function p.fetchArt(artId)
| |
| artId = tonumber(artId)
| |
| if not artId or not VALID_IDS[artId] then
| |
| return nil
| |
| end
| |
| local cached = cache[artId]
| |
| if cached ~= nil then
| |
| return cached
| |
| end
| |
| local ok, data = pcall(post, "bdat_common.pc_arts", artId)
| |
| if not ok or type(data) ~= "table" or not data.row_id then
| |
| cache[artId] = false
| |
| return nil
| |
| end
| |
| cache[artId] = data
| |
| return data
| |
| end
| |
|
| |
| function p.fetchDesc(artId)
| |
| return nil
| |
| end
| |
|
| |
| function p.fetchApTable()
| |
| return nil
| |
| end
| |
|
| |
| function p.isValidArtId(artId)
| |
| artId = tonumber(artId)
| |
| return artId ~= nil and VALID_IDS[artId] == true
| |
| end
| |
|
| |
| return p
| |