local p = {}
function p.test(frame)
local args = frame.args
local order = args[1]
local name = args[2]
local some = args[3]
local function contains(t, value)
for _, v in ipairs(t) do
if v == value then
return true
end
end
return false
end
local function custom_sort(a, b)
return tonumber(a) > tonumber(b)
end
if name == nil or name == "" then
return "文本为空,请在|name=填入要查询的角色名"
end
local pattern = "第(%d+)话"
local extracted_numbers = {}
for match in (some..pattern):gmatch(pattern) do
if not contains(extracted_numbers, match) then
table.insert(extracted_numbers, match)
end
end
local sorted_t = {}
for i, x in ipairs(extracted_numbers) do
table.insert(sorted_t, tonumber(x))
end
if order == 'asc' then
table.sort(sorted_t)
elseif order == 'desc' then
table.sort(sorted_t, custom_sort)
end
local huashu = {}
for i, num in ipairs(sorted_t) do
local new_value = "[[第" .. num .. "话]]"
table.insert(huashu, new_value)
end
local plainlinks = "plainlinks"
local namelur = "<span class=" ..plainlinks.. ">[https://youshou.wiki/wiki/Special:%E8%AF%A2%E9%97%AE/-5B-5BOnCamera:character-20name::" ..name.. "-5D-5D/limit%3D50/format%3Dplainlist 查询更多]</span>"
table.insert(huashu, namelur)
local result = {}
local counter = 0
for _, val in ipairs(huashu) do
table.insert(result, val)
counter = counter + 1
if counter % 14 == 0 and counter ~= #huashu then
table.insert(result, "<br>")
end
if counter % 14 ~= 0 then
table.insert(result, " · ")
end
end
local lastElement = table.remove(result)
if lastElement ~= " · " then
table.insert(result, lastElement)
end
local output = table.concat(result, "")
return output
end
function p.listl( framel )
local orderl = framel.args[1]
-- local w = "[[OnCamera:character name::"..orderl.."]]"
-- local queryResult = mw.smw.ask( w )
-- if queryResult == nil then
-- return "404"
-- end
-- local a = {}
-- for i, x in ipairs(queryResult) do
-- for _, i in ipairs(x) do
-- table.insert(a, i)
-- end
-- end
-- local output = table.concat(a, "")
-- return output
local function askcount(char,t)
t=t or nil
local askt = nil
if t == "主要" then
askt = " [[OnCamera:type::主要]]"
elseif t == "次要" then
askt = " [[OnCamera:type::次要]]"
elseif t == "背景" then
askt = " [[OnCamera:type::背景]]"
else
askt = ""
end
local query = {
conditions = "[[OnCamera:character name::"..char.."]]"..askt,
printouts = {"?OnCamera:number="},
parameters = {mainlabel="-",sort="OnCamera:number",limit=1000,format='count'}
}
local result = mw.smw.ask( query )
local a = {}
for i, x in ipairs(result) do
for _, i in ipairs(x) do
table.insert(a, i)
end
end
local output = table.concat(a, "")
return output
end
return askcount(orderl)
end
return p