bugfix250107.1
全站通知:

模块:Sort

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

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

local p = {}

local smw = require('Module:SMW')

local SETTING = {
	{ key = "剧情", value = { ["主类"] = "剧情", ["副类"] = "剧情", ["id"] = 100000000 ,["朋友圈大类"] = "剧情" }},
	{ key = "牵绊", value = { ["主类"] = "牵绊", ["副类"] = "牵绊", ["id"] = 110000000 ,["朋友圈大类"] = "日常" }},
	{ key = "喵喵", value = { ["主类"] = "约会", ["副类"] = "喵喵", ["id"] = 200000000 ,["朋友圈大类"] = "日常" }},
    { key = "娃娃", value = { ["主类"] = "约会", ["副类"] = "娃娃", ["id"] = 210000000 ,["朋友圈大类"] = "日常" }},
    { key = "玩偶", value = { ["主类"] = "约会", ["副类"] = "娃娃", ["id"] = 210000000 ,["朋友圈大类"] = "日常" }},
    { key = "写真", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "拍照", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "拍摄", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "合影", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "合照", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "合拍", value = { ["主类"] = "约会", ["副类"] = "拍照", ["id"] = 220000000 ,["朋友圈大类"] = "日常" }},
    { key = "徽章", value = { ["主类"] = "约会", ["副类"] = "徽章", ["id"] = 230000000 ,["朋友圈大类"] = "日常" }},
    { key = "喵呜", value = { ["主类"] = "约会", ["副类"] = "徽章", ["id"] = 230000000 ,["朋友圈大类"] = "日常" }},
	{ key = "战斗", value = { ["主类"] = "战斗", ["副类"] = "战斗", ["id"] = 300000000 ,["朋友圈大类"] = "日常" }},
	{ key = "时间", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 400000000 ,["朋友圈大类"] = "日常" }},
    { key = "登录", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 400000000 ,["朋友圈大类"] = "日常" }},
    { key = "节", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 410000000 ,["朋友圈大类"] = "日常" }},
    { key = "活动", value = { ["主类"] = "活动", ["副类"] = "活动", ["id"] = 500000000 ,["朋友圈大类"] = "活动" }},
    { key = "彩蛋", value = { ["主类"] = "彩蛋", ["副类"] = "彩蛋", ["id"] = 600000000 ,["朋友圈大类"] = "日常" }},
	{ key = "饰", value = { ["主类"] = "彩蛋", ["副类"] = "服饰", ["id"] = 610000000 ,["朋友圈大类"] = "日常" }},
    { key = "服", value = { ["主类"] = "彩蛋", ["副类"] = "服饰", ["id"] = 610000000 ,["朋友圈大类"] = "日常" }},
    { key = "装扮", value = { ["主类"] = "彩蛋", ["副类"] = "装扮", ["id"] = 620000000 ,["朋友圈大类"] = "日常" }},
    { key = "其他", value = { ["主类"] = "其他", ["副类"] = "其他", ["id"] = 700000000 ,["朋友圈大类"] = "其他" }}
}

function p.getType(frame)
    local inputString = frame.args[1]
    local inputType = frame.args[2]
    
    -- 首先检查字符串开头是否完全匹配
    for _, item in ipairs(SETTING) do
        local keyLength = string.len(item.key)
        local strStart = string.sub(inputString, 1, keyLength)
        if strStart == item.key then
            return item.value[inputType]
        end
    end
    
    -- 如果没有完全匹配,使用模糊匹配
    for _, item in ipairs(SETTING) do
        if string.find(inputString, item.key) then
            return item.value[inputType]
        end
    end
    return "其他"
end

function p.getID(frame)
    local inputString = frame.args[1]
    local inputType = "id"
    
    -- 首先检查字符串开头是否完全匹配
    for _, item in ipairs(SETTING) do
        local keyLength = string.len(item.key)
        local strStart = string.sub(inputString, 1, keyLength)
        if strStart == item.key then
            return item.value[inputType] + get_Date_Num(get_activity_Date(inputString))
        end
    end
    
    -- 如果没有完全匹配,使用模糊匹配
    for _, item in ipairs(SETTING) do
        if string.find(inputString, item.key) then
            return item.value[inputType] + get_Date_Num(get_activity_Date(inputString))
        end
    end
    
    return SETTING[#SETTING].value.id + get_Date_Num(get_activity_Date(inputString))
end

--查找并返回日期>数字>0
function get_Date_Num(inputString)
    -- 优先查找日期
    local datePattern = "(%d+)-(%d+)-(%d+)"
    local year, month, day = string.match(inputString, datePattern)
    if year and month and day then
        -- 将日期转换为YYYYMMDD格式的数字
        return tonumber(year .. month .. day)
    end

    -- 如果没有日期,则查找数字
    local number = string.match(inputString, "%d+")
    if number then
        return tonumber(number)
    end

    -- 如果既没有日期也没有数字,返回0
    return 0
end

function get_activity_Date(inputString)
	local askActivity = "0"
	local askDate = "排序开始时间"

    -- 提取[[「」]]里的内容(不包括[[和]])
    local activityPattern = "%[%[「(.-)」%]%]"
    local content = string.match(inputString, activityPattern)
    if content then
        askActivity = "「" .. content .. "」"
    else
        -- 如果没有找到[[「」]]格式,尝试查找普通的「」格式
        local simplePattern = "「(.-)」"
        content = string.match(inputString, simplePattern)
        if content then
            askActivity = "「" .. content .. "」"
        end
    end
	
	-- 还是没有就直接返回inputString
	if not content then
        return inputString
	end
	
	local frame = mw.getCurrentFrame()
	frame.args[1] = askActivity
	frame.args[2] = askDate
	local date = smw.show(frame)
	return date
end

function p.test(frame)
	local inputString = frame.args[1]
	local askActivity = "0"
	local askDate = "排序开始时间"

    -- 提取[[「」]]里的内容(不包括[[和]])
    local activityPattern = "%[%[「(.-)」%]%]"
    local content = string.match(inputString, activityPattern)
    if content then
        askActivity = "「" .. content .. "」"
    else
        -- 如果没有找到[[「」]]格式,尝试查找普通的「」格式
        local simplePattern = "「(.-)」"
        content = string.match(inputString, simplePattern)
        if content then
            askActivity = "「" .. content .. "」"
        end
    end
	
	-- 还是没有就直接返回inputString
	if not content then
        return inputString
	end
	
	return askActivity
end


return p