全站通知:
模块:排序
刷
历
编
跳到导航
跳到搜索
此模块的文档可以在模块:排序/doc创建
local p = {}
local SETTING = {
{ key = "剧情", value = { ["主类"] = "剧情", ["副类"] = "剧情", ["id"] = 110000000 } },
{ key = "牵绊", value = { ["主类"] = "牵绊", ["副类"] = "牵绊", ["id"] = 100000000 } },
{ 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"] = 300000000 } },
{ key = "时间", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 400000000 } },
{ key = "登录", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 400000000 } },
{ key = "节", value = { ["主类"] = "时间", ["副类"] = "时间", ["id"] = 410000000 } },
{ key = "活动", value = { ["主类"] = "其他", ["副类"] = "活动", ["id"] = 500000000 } },
{ key = "饰", value = { ["主类"] = "其他", ["副类"] = "服饰", ["id"] = 530000000 } },
{ key = "服", value = { ["主类"] = "其他", ["副类"] = "服饰", ["id"] = 530000000 } },
{ key = "装扮", value = { ["主类"] = "其他", ["副类"] = "装扮", ["id"] = 540000000 } },
{ key = "其他", value = { ["主类"] = "其他", ["副类"] = "其他", ["id"] = 590000000 } }
}
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(inputString)
end
end
-- 如果没有完全匹配,使用模糊匹配
for _, item in ipairs(SETTING) do
if string.find(inputString, item.key) then
return item.value[inputType] + get_Date_Num(inputString)
end
end
return SETTING[#SETTING].value.id + get_Date_Num(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
-- 旧版查找返回id函数👇
function p.getVideoSortID(frame)
-- local inputString = "牵绊度心动14级"
-- local inputString = "定向轨道·冰20层"
local inputString = frame.args[1]
-- 检查输入字符串是否以"牵绊度"开头:排序id为10000开头
if string.sub(inputString, 1, 9) == "牵绊度" then
-- 尝试找到数字并返回
local number = string.match(inputString, "%d+")
if number then
return tonumber(number)+10000
end
-- 检查输入字符串是否以"定向轨道"开头:排序id为20000开头
elseif string.sub(inputString, 1, 12) == "定向轨道" then
-- 尝试找到层数数字并返回
local level = string.match(inputString, "%d+")
if level then
return tonumber(level)+20000
end
-- 检查输入字符串是否以"活动"开头:排序id为日期数字
elseif string.sub(inputString, 1, 6) == "活动" then
-- 尝试找到日期格式的数字并返回
local date = string.match(inputString, "%d%d%d%d%d%d%d%d")
if date then
return tonumber(date)
end
end
-- 如果没有匹配到任何情况,返回99999999
return 99999999
end
function p.withYou(frame)
local inputString = frame.args[1]
-- 检查输入字符串是否以"牵绊度"开头
if string.sub(inputString, 1, 9) == "牵绊度" then
local number = string.match(inputString, "%d+")
if number then
return tonumber(number) + 10000
end
-- 检查输入字符串是否以"获得思念"开头
elseif string.sub(inputString, 1, 12) == "获得思念" then
-- 使用正则表达式匹配并提取方括号内的内容
local pattern = "%[(.+)%]"
local extractedString = string.match(inputString, pattern)
if extractedString then
local SMW = require('Module:SMW')
local _smwframe = mw.getCurrentFrame()
_smwframe.args[1] = '思念名称::'..extractedString
_smwframe.args[2] = '思念上线时间'
local dateStr = SMW.show(_smwframe)
local year, month, day = dateStr:match("(%d+)-(%d+)-(%d+)")
return tonumber(year .. month .. day)
end
end
-- 如果没有匹配到任何情况,返回99999999
return 99999999
end
return p