bugfix250107.1
全站通知:

模块:思念

来自恋与深空WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

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

-- 测试用法
-- local frame = mw.getCurrentFrame()
-- frame.args[1] = 10.1
-- p.isNumber(frame)

local p={}

-- 定义特殊思念(没有视频的5星卡和有视频的4/3星卡)
local skip_Card = {'飞羽向夜', '方寸盈余', '隐秘日出', '余温过午', '永恒心役', '逐光迷心', '深海醉金','暗潮边缘','限定余味'}
local add_Card = {'余冽', '漉漉温言', '潮夜陷落'}

function p.getVideo(frame)
    -- 获取参数
    local he = frame.args[1] -- 角色名:沈星回/黎深/祁煜/秦彻/夏以昼
    local star = frame.args[2] -- 星级:3/4/5
    local card = frame.args[3] -- 思念名字
    
    -- 默认视频地址
    local defaultVideo = {
        ['沈星回'] = 'BV19m42137BV',
        ['黎深'] = 'BV1tH4y1w7y4',
        ['祁煜'] = 'BV1W6421Z7NZ',
        ['秦彻'] = 'BV16T421r7je',
        ['夏以昼'] = 'BV1emcgeyEsh'
    }
    
    -- 检查card是否在skip_Card里
    for _, skipCard in ipairs(skip_Card) do
        if card == skipCard then
            return '' -- 返回空
        end
    end
    
    -- 检查card是否在add_Card里
    for _, addCard in ipairs(add_Card) do
        if card == addCard then
            return defaultVideo[he] -- 返回对应角色的defaultVideo
        end
    end
    
    -- 检查star是否等于5
    if star == '5' then
        return defaultVideo[he] -- 返回对应角色的defaultVideo
    end
    
    -- 如果以上条件都不满足,返回空
    return ''
end

function p.boolSetVideo(frame)
    local cardStar = frame.args[1] -- 思念星级
    local card = frame.args[2] -- 思念名字
    
    -- 判断是否有视频
    -- 返回值:0代表无视频,1代表有视频
    
    if cardStar == '5' then
        -- 5星思念:检查是否在skip_Card列表中
        for _, skipCard in ipairs(skip_Card) do
            if card == skipCard then
                return 0 -- 在skip列表中,无视频
            end
        end
        return 1 -- 不在skip列表中,有视频
    else
        -- 非5星思念:检查是否在add_Card列表中
        for _, addCard in ipairs(add_Card) do
            if card == addCard then
                return 1 -- 在add列表中,有视频
            end
        end
        return 0 -- 不在add列表中,无视频
    end
end

function p.boolExitsVideo(frame)
    local bv, pName = frame.args[1], frame.args[2]
    
    -- 判断视频是否存在
    -- 返回值:1代表视频存在,0代表视频不存在
    
    if not bv or bv == '' or not pName or pName == '' then return 0 end
    
    local response = mw.ext.HTTP.get(
        'https://api.bilibili.com/x/web-interface/view?bvid=' .. bv
    )
    
    if not response then return 0 end
    
    local success, data = pcall(mw.text.jsonDecode, response)
    if not success or not data or not data.data or not data.data.pages then return 0 end
    
    for _, page in ipairs(data.data.pages) do
        if page.part == pName then return 1 end
    end
    
    return 0
end

return p;