打开/关闭菜单
打开/关闭外观设置菜单
打开/关闭个人菜单
未登录
未登录用户的IP地址会在进行任意编辑后公开展示。

模块:HttpTest:修订间差异

来自夜幕之下
Rin留言 | 贡献
无编辑摘要
Rin留言 | 贡献
无编辑摘要
第1行: 第1行:
local p = {}
local p = {}
local function val(v, fallback)
    if v == nil or v == "" then
        return fallback or "—"
    end
    return v
end


function p.get(frame)
function p.get(frame)
第14行: 第7行:
         "https://data.saltedkiss.org/items/cards?filter[stylename][_eq]="
         "https://data.saltedkiss.org/items/cards?filter[stylename][_eq]="
         .. mw.uri.encode(cardname)
         .. mw.uri.encode(cardname)
         .. "&limit=1&fields=*,character.*,profession.*,desire.*,skill_normal_attack.*,skill_passive.*,skill_ultimate.*,feats.stages.*,stories.story"
         .. "&limit=1&fields=*,character.*,profession.*,desire.*,skill_normal_attack.*,skill_passive.*,skill_ultimate.*,feats.stages.*,stories.text"


     -- ExternalData 获取数据
     -- 调用 ExternalData
     local data = mw.ext.externalData.getExternalData({
     local rawData = mw.ext.externalData.getExternalData({
         url = url,
         url = url,
         format = "json"
         format = "json"
     })
     })


     if not data or not data[1] then
    -- 先确保数据存在
     if not rawData or not rawData[1] or not rawData[1].__json
        or not rawData[1].__json.data or #rawData[1].__json.data == 0 then
         return "未获取到卡牌数据"
         return "未获取到卡牌数据"
     end
     end


     local card = data[1]
    -- 核心数据表
     local cardData = rawData[1].__json.data[1]


     -- 创建变量
     -- 创建变量
     local stylename = val(card.stylename)
     local stylename = cardData.stylename or "—"
     local rarity = val(card.rarity)
     local rarity = cardData.rarity or "—"
     local character = val(card.character and card.character.name)
     local character = (cardData.character and cardData.character.name) or "—"
     local profession = val(card.profession and card.profession.name)
     local profession = (cardData.profession and cardData.profession.name) or "—"
     local desire = val(card.desire and card.desire.name)
     local desire = (cardData.desire and cardData.desire.name) or "—"
 
    local skill_normal_name = (cardData.skill_normal_attack and cardData.skill_normal_attack.name) or "—"
    local skill_normal_desc = (cardData.skill_normal_attack and cardData.skill_normal_attack.description) or "—"
 
    local skill_passive_name = (cardData.skill_passive and cardData.skill_passive.name) or "—"
    local skill_passive_desc = (cardData.skill_passive and cardData.skill_passive.description) or "—"


     local skill_normal_attack = card.skill_normal_attack or {}
     local skill_ultimate_name = (cardData.skill_ultimate and cardData.skill_ultimate.name) or "—"
     local skill_passive = card.skill_passive or {}
     local skill_ultimate_desc = (cardData.skill_ultimate and cardData.skill_ultimate.description) or "—"
    local skill_ultimate = card.skill_ultimate or {}


     local feats = card.feats or {}
     local stories = {}
     local stories = card.stories or {}
     if cardData.stories then
        for i, s in ipairs(cardData.stories) do
            table.insert(stories, s.text or "—")
        end
    end


     -- 简单输出测试(可换成你后续处理)
     -- 返回一个简单 HTML 显示
     local output = "<pre>"
     local output = "<pre>"
     output = output .. "卡牌名: " .. stylename .. "\n"
     output = output .. "卡牌名: " .. stylename .. "\n"
第48行: 第53行:
     output = output .. "角色: " .. character .. "\n"
     output = output .. "角色: " .. character .. "\n"
     output = output .. "职业: " .. profession .. "\n"
     output = output .. "职业: " .. profession .. "\n"
     output = output .. "欲望: " .. desire .. "\n"
     output = output .. "欲望: " .. desire .. "\n\n"


    -- 技能输出示例
     output = output .. "普通攻击: " .. skill_normal_name .. " - " .. skill_normal_desc .. "\n"
     output = output .. "\n普通攻击: " .. val(skill_normal_attack.name) .. " - " .. val(skill_normal_attack.description) .. "\n"
     output = output .. "被动技能: " .. skill_passive_name .. " - " .. skill_passive_desc .. "\n"
     output = output .. "被动技能: " .. val(skill_passive.name) .. " - " .. val(skill_passive.description) .. "\n"
     output = output .. "必杀技能: " .. skill_ultimate_name .. " - " .. skill_ultimate_desc .. "\n\n"
     output = output .. "必杀技能: " .. val(skill_ultimate.name) .. " - " .. val(skill_ultimate.description) .. "\n"


     -- 输出故事数量
     output = output .. "故事条数: " .. #stories .. "\n"
     output = output .. "\n故事条数: " .. #stories .. "\n"
     for i, story in ipairs(stories) do
        output = output .. "故事 " .. i .. ":\n" .. story .. "\n\n"
    end


     output = output .. mw.dumpObject(data) .. "</pre>"
     output = output .. "</pre>"


     return output
     return output

2026年3月11日 (三) 22:35的版本

此模块的文档可以在模块:HttpTest/doc创建

local p = {}

function p.get(frame)
    local cardname = frame.args[1] or ""

    local url =
        "https://data.saltedkiss.org/items/cards?filter[stylename][_eq]="
        .. mw.uri.encode(cardname)
        .. "&limit=1&fields=*,character.*,profession.*,desire.*,skill_normal_attack.*,skill_passive.*,skill_ultimate.*,feats.stages.*,stories.text"

    -- 调用 ExternalData
    local rawData = mw.ext.externalData.getExternalData({
        url = url,
        format = "json"
    })

    -- 先确保数据存在
    if not rawData or not rawData[1] or not rawData[1].__json
        or not rawData[1].__json.data or #rawData[1].__json.data == 0 then
        return "未获取到卡牌数据"
    end

    -- 核心数据表
    local cardData = rawData[1].__json.data[1]

    -- 创建变量
    local stylename = cardData.stylename or "—"
    local rarity = cardData.rarity or "—"
    local character = (cardData.character and cardData.character.name) or "—"
    local profession = (cardData.profession and cardData.profession.name) or "—"
    local desire = (cardData.desire and cardData.desire.name) or "—"

    local skill_normal_name = (cardData.skill_normal_attack and cardData.skill_normal_attack.name) or "—"
    local skill_normal_desc = (cardData.skill_normal_attack and cardData.skill_normal_attack.description) or "—"

    local skill_passive_name = (cardData.skill_passive and cardData.skill_passive.name) or "—"
    local skill_passive_desc = (cardData.skill_passive and cardData.skill_passive.description) or "—"

    local skill_ultimate_name = (cardData.skill_ultimate and cardData.skill_ultimate.name) or "—"
    local skill_ultimate_desc = (cardData.skill_ultimate and cardData.skill_ultimate.description) or "—"

    local stories = {}
    if cardData.stories then
        for i, s in ipairs(cardData.stories) do
            table.insert(stories, s.text or "—")
        end
    end

    -- 返回一个简单 HTML 显示
    local output = "<pre>"
    output = output .. "卡牌名: " .. stylename .. "\n"
    output = output .. "稀有度: " .. rarity .. "\n"
    output = output .. "角色: " .. character .. "\n"
    output = output .. "职业: " .. profession .. "\n"
    output = output .. "欲望: " .. desire .. "\n\n"

    output = output .. "普通攻击: " .. skill_normal_name .. " - " .. skill_normal_desc .. "\n"
    output = output .. "被动技能: " .. skill_passive_name .. " - " .. skill_passive_desc .. "\n"
    output = output .. "必杀技能: " .. skill_ultimate_name .. " - " .. skill_ultimate_desc .. "\n\n"

    output = output .. "故事条数: " .. #stories .. "\n"
    for i, story in ipairs(stories) do
        output = output .. "故事 " .. i .. ":\n" .. story .. "\n\n"
    end

    output = output .. "</pre>"

    return output
end

return p