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

Module:Bilibili:修订间差异

来自OTTOWiki
琪露若
琪露若留言 | 贡献 (Debug and FIx Format)
 
(未显示同一用户的2个中间版本)
第18行: 第18行:
     end
     end
      
      
     if response.code == 0 and response.title then
     if response.code == 0 and response.__json.data.title then
         return response.title  -- 返回视频标题
         return response.__json.data.title  -- 返回视频标题
     else
     else
         return "视频不存在或获取失败"
         return "视频不存在或获取失败"
第42行: 第42行:
     end
     end
      
      
     if response.code == 0 and response.pic then
     if response.code == 0 and response.__json.data.pic then
         return response.pic
         return response.__json.data.pic
     else
     else
         return "视频不存在或获取失败"
         return "视频不存在或获取失败"
第50行: 第50行:


function p.getOwner(frame)
function p.getOwner(frame)
    local bvid = frame.args[1]
local bvid = frame.args[1]
    if not bvid or bvid == "" then
if not bvid or bvid == '' then
        return "无效BV号"
return "无效BV号"
    end
end
 
    local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
 
    local resp = mw.ext.externalData.getWebData{
local response = mw.ext.externalData.getWebData{
         url = url,
         url = url,
         format = "json"
         format = "json"
     }
     }
 
   
mw.logObject(resp, "bilibili_resp")
     if not response then
 
         return "获取信息失败"
     if type(resp) ~= "table" then
         return "获取信息失败:非JSON或解析失败"
     end
     end
 
   
     if resp.code ~= 0 then
     if response.code == 0 and response.__json.data.owner.name then
        local msg = (type(resp.message) == "string" and resp.message ~= "") and resp.message or "未知错误"
         return response.__json.data.owner.name
        return "接口返回错误:code=" .. tostring(resp.code) .. " msg=" .. msg
     else
    end
         return "视频不存在或获取失败"
 
    local data = resp.data
    if type(data) ~= "table" then
         return "获取信息失败:响应缺少data字段"
    end
 
    local owner = data.owner
    if type(owner) ~= "table" then
        return "获取信息失败:响应缺少owner字段"
    end
 
    local name = owner.name
     if type(name) ~= "string" or name == "" then
         return "获取信息失败:响应缺少owner.name"
     end
     end
    return name
end
end


第104行: 第86行:
         format = "json"
         format = "json"
     }
     }
   
 
     if not response then
     if not response then
         return "获取信息失败"
         return "获取信息失败"
     end
     end
      
      
     if response.code == 0 and response.data.stat.view then
     if response.code == 0 and response.__json.data.stat.view then
         return response.data.stat.view
         return response.__json.data.stat.view
     else
     else
         return "视频不存在或获取失败"
         return "视频不存在或获取失败"

2026年2月6日 (五) 17:50的最新版本

local p = {}

function p.getTitle(frame)
    local bvid = frame.args[1]
    if not bvid or bvid == '' then
        return "无效BV号"
    end
    
    -- 调用B站API获取视频信息
    local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
    local response = mw.ext.externalData.getWebData{
        url = url,
        format = "json"
    }
    
    if not response then
        return "获取信息失败"
    end
    
    if response.code == 0 and response.__json.data.title then
        return response.__json.data.title  -- 返回视频标题
    else
        return "视频不存在或获取失败"
    end
end

function p.getPic(frame)
	local bvid = frame.args[1]
	if not bvid or bvid == '' then
		return "无效BV号"
	end
	
	local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
	
	local response = mw.ext.externalData.getWebData{
        url = url,
        format = "json"
    }
    
    if not response then
        return "获取信息失败"
    end
    
    if response.code == 0 and response.__json.data.pic then
        return response.__json.data.pic
    else
        return "视频不存在或获取失败"
    end
end

function p.getOwner(frame)
	local bvid = frame.args[1]
	if not bvid or bvid == '' then
		return "无效BV号"
	end
	
	local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
	
	local response = mw.ext.externalData.getWebData{
        url = url,
        format = "json"
    }
    
    if not response then
        return "获取信息失败"
    end
    
    if response.code == 0 and response.__json.data.owner.name then
        return response.__json.data.owner.name
    else
        return "视频不存在或获取失败"
    end
end


function p.getView(frame)
	local bvid = frame.args[1]
	if not bvid or bvid == '' then
		return "无效BV号"
	end
	
	local url = "https://api.bilibili.com/x/web-interface/view?bvid=" .. bvid
	
	local response = mw.ext.externalData.getWebData{
        url = url,
        format = "json"
    }

    if not response then
        return "获取信息失败"
    end
    
    if response.code == 0 and response.__json.data.stat.view then
        return response.__json.data.stat.view
    else
        return "视频不存在或获取失败"
    end
end

return p