134
个编辑
DrLee lihr(讨论 | 贡献) 无编辑摘要 |
DrLee lihr(讨论 | 贡献) (重写了重写了 vsc里一顿写之后预览一遍过给我自己都吓到了) |
||
第8行: | 第8行: | ||
local function cv() | local function cv() | ||
local list = {} | local list = {} | ||
for i,k in pairs(songlist['songs']) | for i,k in pairs(songlist['songs']) do | ||
list[k['id']] = { | |||
list[k['id']] = { | k['title_localized']['en'], | ||
k['title_localized']['en'], | |||
k["date"], | k["date"], | ||
nil, | nil, | ||
nil | nil | ||
} | } | ||
local byd = k["difficulties"][4] | |||
if | if byd then | ||
list[k['id']][3] = | if byd["title_localized"] then | ||
list[k['id']][3] = byd["title_localized"]["en"] | |||
end | end | ||
if | if byd["date"] then | ||
list[k['id']][4] = | list[k['id']][4] = byd["date"] | ||
end | end | ||
end | end | ||
第29行: | 第29行: | ||
function p.main() | |||
local name, link, timestamp, index | |||
local name, link | |||
local cvList = cv() | local cvList = cv() | ||
local result = {} | |||
local mid_result = {} | |||
local get_table_index = function(i) | |||
if i>=11 then | |||
return math.floor(i) | |||
else return i end | |||
end | |||
for i, k in pairs(chartConstantList) do | for i, k in pairs(chartConstantList) do | ||
name = cvList[i][1] | |||
link = name | |||
timestamp = cvList[i][2] | |||
if trans["songNameToDisplayName"][name] then | if trans["songNameToDisplayName"][name] then | ||
link = trans["songNameToDisplayName"][name] | link = trans["songNameToDisplayName"][name] | ||
end | end | ||
if trans["sameName"][name] then | if trans["sameName"][name] then | ||
link = trans["sameName"][name][i] | link = trans["sameName"][name][i] | ||
end | end | ||
if cvList[i][4] then | |||
timestamp = cvList[i][4] | |||
end | |||
for m, q in ipairs({ 2, 3, 4 }) do | |||
if k[q] and tonumber(k[q]["constant"])>=8 and not k[q]["old"] then | |||
index = get_table_index(k[q]["constant"]) | |||
if not mid_result[index] then mid_result[index] = {} end | |||
table.insert(mid_result[index], { i, name, k[q]["constant"], ({"","PRS","FTR","BYD"})[q], link, timestamp }) | |||
end | |||
end | |||
end | end | ||
-- use template | -- use template | ||
-- 组排单元 第一个参数是曲名,第二个是id,第三个是难度,link字面意思 | -- 组排单元 第一个参数是曲名,第二个是id,第三个是难度,link字面意思 | ||
for s, k in pairs(mid_result) do | for s, k in pairs(mid_result) do | ||
if not(result[s]) then result[s] = {} end | |||
index = get_table_index(k[1][3]) | |||
table.sort(k, | |||
function (a, b) | |||
if a[3]~=b[3] then | |||
return a[3]>b[3] | |||
end | |||
return a[6]<b[6] | |||
end) | |||
for n, m in ipairs(k) do | |||
local arguments = { m[2], m[1], m[4], link=m[5] } | |||
if index >= 11 then arguments.CC = string.format("%.1f", m[3]) end | |||
table.insert(result[index], mw.getCurrentFrame():expandTemplate { title = '组排单元', args = arguments }) | |||
end | |||
end | end | ||
-- sort constants | -- sort constants | ||
local | local sortedTable = {} | ||
for i,k in pairs(result) do | for i,k in pairs(result) do | ||
table.insert( | table.insert(sortedTable, {i, k}) | ||
end | end | ||
table.sort( | table.sort(sortedTable, function(a,b) return a[1] > b[1] end) | ||
-- add head and end | -- add head and end | ||
local finText = "<div class='notaninfobox dstable'>\n" | local finText = "<div class='notaninfobox dstable'>\n" | ||
for i,k in ipairs(sortedTable) do | |||
for i,k in ipairs( | if k[1] == 11 or k[1] == 12 then | ||
finText = finText | |||
if k[1] == 11 or k[1] == 12 | .. "<div class='ds'>" .. k[1] .. "</div>\n" | ||
.. "<div class='number'>" .. mw.getCurrentFrame():expandTemplate { title = '组排列', args = { ['高度']="154px" } } | |||
finText = finText .. "<div class='ds'>"..k[1].."</div>\n" | .. table.concat(k[2]) .. mw.getCurrentFrame():expandTemplate { title = '组排列-end' } .. "</div>\n" | ||
..table.concat(k[2])..mw.getCurrentFrame():expandTemplate { title = '组排列-end' }.."</div>\n" | |||
else | else | ||
finText = finText .. "<div class='ds'>"..string.format("%.1f", k[1]).."</div>\n" | finText = finText | ||
.. "<div class='ds'>" .. string.format("%.1f", k[1]).."</div>\n" | |||
..table.concat(k[2])..mw.getCurrentFrame():expandTemplate { title = '组排列-end' }.."</div>\n" | .. "<div class='number'>" .. mw.getCurrentFrame():expandTemplate { title = '组排列' } | ||
.. table.concat(k[2]) .. mw.getCurrentFrame():expandTemplate { title = '组排列-end' } .. "</div>\n" | |||
end | end | ||
end | end | ||
finText = finText .. "</div>" | finText = finText .. "</div>" | ||
return finText | return finText | ||
end | end | ||
return p | return p |
个编辑