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

Module:Heartrate:修订间差异

来自OTTOWiki
 
(未显示同一用户的34个中间版本)
第2行: 第2行:


function p.getHeartRate(frame)
function p.getHeartRate(frame)
    -- 获取传入参数
     local args = frame.args or {}
     local args = frame.args
    local apiUrl = args.url
      
      
     -- 验证URL参数
     -- 从参数中获取API URL,如果没有提供则使用默认值
     if not apiUrl or apiUrl == "" then
     local apiurl = args.apiurl or "https://public-heart-rate-api.xihan.website/uuid/65070027-f910-4a8b-a5db-ac8d52ecf355/latest-heart-rate"
        return "错误:缺少API URL参数"
    end
      
      
     -- 发起HTTP GET请求
     -- 直接获取数据(不要用pcall)
     local response
     local data = mw.ext.externalData.getWebData{
    local status, err = pcall(function()
        url = apiurl,
         response = mw.http.get(
        format = "json",
            apiUrl
         ['cache seconds'] = args.cache or 2  -- 也可以让缓存时间可配置
        )
     }
     end)
      
      
     -- 检查请求是否成功
     -- 直接返回心率值(API结构固定时可用)
     if not status or not response then
     return data.heart_rate
        return "错误:API请求失败 - " .. (err or "未知错误")
    end
   
    if response.status ~= 200 then
        return "错误:API返回HTTP状态码 " .. response.status
    end
   
    -- 解析JSON数据
    local jsonData
    status, jsonData = pcall(mw.text.jsonDecode, response.body)
    if not status or type(jsonData) ~= "table" then
        return "错误:JSON解析失败"
    end
   
    -- 验证数据结构并提取心率值
    if jsonData.message == "ok"
        and type(jsonData.data) == "table"
        and type(jsonData.data.heart_rate) == "number" then
       
        return jsonData.data.heart_rate
    else
        return "错误:无效的数据结构"
    end
end
end


return p
return p

2025年6月23日 (一) 20:35的最新版本

local p = {}

function p.getHeartRate(frame)
    local args = frame.args or {}
    
    -- 从参数中获取API URL,如果没有提供则使用默认值
    local apiurl = args.apiurl or "https://public-heart-rate-api.xihan.website/uuid/65070027-f910-4a8b-a5db-ac8d52ecf355/latest-heart-rate"
    
    -- 直接获取数据(不要用pcall)
    local data = mw.ext.externalData.getWebData{
        url = apiurl,
        format = "json",
        ['cache seconds'] = args.cache or 2  -- 也可以让缓存时间可配置
    }
    
    -- 直接返回心率值(API结构固定时可用)
    return data.heart_rate
end

return p