Module:Song:修订间差异
外观
创建页面,内容为“local module = {} local getArgs = require('Module:Arguments').getArgs local sl = mw.loadJsonData('Module:Songlist-brief.json') function module.list(frame) local args = getArgs(frame) local equalSign = args[1] if (equalSign == nil) then equalSign = 3 else equalSign = tonumber(equalSign) end local resTable = {} for k,v in pairs(sl) do resTable[k] = k .. " 号歌曲是" if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then resT…” |
无编辑摘要 |
||
| (未显示同一用户的50个中间版本) | |||
| 第2行: | 第2行: | ||
local getArgs = require('Module:Arguments').getArgs | local getArgs = require('Module:Arguments').getArgs | ||
local | local slJson = mw.loadJsonData('Module:Songlist-brief.json') | ||
local ver = slJson.version | |||
local sl = slJson.songlist | |||
local lang = {["qsd"] = "希顶语", ["zxx"] = "纯音乐", ["cmn"] = "国语", ["eng"] = "英语", ["jpn"] = "日语", ["mul"] = "多语种", ["nap"] = "意大利语那不勒斯方言", ["ron"] = "罗马尼亚语", ["yue"] = "粤语", ["kor"] = "朝鲜语", ["rus"] = "俄语"} | |||
function module. | function myConcat(l, sep) | ||
sep = sep or "、" | |||
local ret = "" | |||
local bj = 0 | |||
for k,v in pairs(l) do | |||
if bj == 0 then | |||
bj = 1 | |||
else | |||
ret = ret .. sep | |||
end | |||
ret = ret .. v | |||
end | |||
return ret | |||
end | |||
function multilang(str) | |||
local ret = "" | |||
local bj = 0 | |||
for field in str:gmatch("([^,]+)") do | |||
if bj == 0 then | |||
bj = 1 | |||
else | |||
ret = ret .. "、" | |||
end | |||
local tmp = field:match("^%s*(.-)%s*$") -- 去除首尾空格 | |||
local tmp2 = lang[tmp] | |||
if tmp2 == nil then | |||
ret = ret .. "未知语种(" .. tmp .. ")" | |||
else | |||
ret = ret .. tmp2 | |||
end | |||
end | |||
return ret | |||
end | |||
function songInfo(song) | |||
return myConcat(song.singers) .. "的《" .. song.name .. "》" | |||
end | |||
function module.main(frame) | |||
local args = getArgs(frame) | local args = getArgs(frame) | ||
local equalSign = args[1] | local equalSign = args[1] | ||
| 第13行: | 第55行: | ||
end | end | ||
local resTable = {} | local resTable = {} | ||
for k, | local keys = {} | ||
resTable[k] = k .. " 号歌曲是" | for key in pairs(sl) do | ||
table.insert(keys, tonumber(key)) | |||
end | |||
table.sort(keys) | |||
local lastCont = nil | |||
local firstJump = nil | |||
local contStr = "目前所有已填充歌曲编号均连续。" | |||
for i, k in ipairs(keys) do | |||
if i > 1 then | |||
if k - keys[i - 1] > 1 then | |||
lastCont = keys[i - 1] | |||
firstJump = k | |||
break | |||
end | |||
end | |||
end | |||
if lastCont ~= nil then | |||
contStr = "目前已填充歌曲编号直至[[#" .. tostring(lastCont) .. "号歌曲|" .. tostring(lastCont) .. "号]]均连续,按编号下一首已填充歌曲为[[#" .. tostring(firstJump) .. "号歌曲|" .. tostring(firstJump) .. "号]]。" | |||
end | |||
for _, k in ipairs(keys) do | |||
key = k | |||
if sl[key] == nil then | |||
key = tostring(key) | |||
end | |||
v = sl[key] | |||
resTable[k] = k .. "号歌曲是" | |||
if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then | if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then | ||
resTable[k] = resTable[k] .. "'''" | resTable[k] = resTable[k] .. "'''" | ||
end | end | ||
resTable[k] = resTable[k] .. | resTable[k] = resTable[k] .. songInfo(v.song) | ||
if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then | |||
resTable[k] = resTable[k] .. "'''" | |||
end | |||
if v.placeholding.tier ~= "none" then | |||
resTable[k] = resTable[k] .. ",原版为" .. multilang(v.placeholding.language) .. "版:" | |||
if v.placeholding.tier == "strong" then | |||
resTable[k] = resTable[k] .. "'''" | |||
end | |||
resTable[k] = resTable[k] .. songInfo(v.placeholding.song) | |||
if v.placeholding.tier == "strong" then | |||
resTable[k] = resTable[k] .. "'''" | |||
end | |||
end | |||
resTable[k] = resTable[k] .. "。" | |||
local bj1 = 0 | |||
for kk, vv in pairs(v.alternatives) do | |||
if bj1 == 0 then | |||
bj1 = 1 | |||
resTable[k] = resTable[k] .. "<br/>\n另有" | |||
else | |||
resTable[k] = resTable[k] .. "、" | |||
end | |||
resTable[k] = resTable[k] .. songInfo(vv) | |||
end | |||
if bj1 == 1 then | |||
resTable[k] = resTable[k] .. "等版本。" | |||
end | |||
resTable[k] = resTable[k] .. "\n" | |||
end | end | ||
local outp = "" | local i = 3 | ||
for k | while true do | ||
outp = string.rep("=", equalSign) .. k .. "号歌曲" .. string.rep("=", equalSign) .. "\n" | if args[i - 1] == nil or args[i] == nil then | ||
outp = | break | ||
end | |||
local key1 = tonumber(args[i - 1]) | |||
if resTable[key1] ~= nil then | |||
resTable[key1] = resTable[key1] .. "\n" .. args[i] .. "\n" | |||
end | |||
i = i + 2 | |||
end | |||
local outp = "当前歌单数据的版本号为[[荆哲式流水号|" .. ver .. "]]。\n\n目前阶段共收录" .. #keys .. "首歌,编号范围从" .. keys[1] .. "到" .. keys[#keys] .. "。<br/>\n" .. contStr .. "\n" | |||
for _, k in ipairs(keys) do | |||
outp = outp .. string.rep("=", equalSign) .. k .. "号歌曲" .. string.rep("=", equalSign) .. "\n" | |||
outp = outp .. resTable[k] .. "\n" | |||
end | end | ||
return outp | return outp | ||
end | |||
function module.sortable() | |||
local ret = "{| class=\"wikitable sortable\"\n|+ [[荆哲歌单]]默认中文歌曲部分<br/>可排序表格\n|-\n! 编号 !! 歌手 !! 歌名\n" | |||
local keys = {} | |||
for key in pairs(sl) do | |||
table.insert(keys, tonumber(key)) | |||
end | |||
table.sort(keys) | |||
for _, k in ipairs(keys) do | |||
key = k | |||
if sl[key] == nil then | |||
key = tostring(key) | |||
end | |||
v = sl[key] | |||
ret = ret .. "|-\n| style=\"text-align:right;\"|" .. tostring(k) .. " || " .. myConcat(v.song.singers, "/") .. " || " .. v.song.name .. "\n" | |||
end | |||
ret = ret .. "|}" | |||
return ret | |||
end | end | ||
return module | return module | ||
2026年2月5日 (四) 17:20的最新版本
此模块的文档可以在Module:Song/doc创建
local module = {}
local getArgs = require('Module:Arguments').getArgs
local slJson = mw.loadJsonData('Module:Songlist-brief.json')
local ver = slJson.version
local sl = slJson.songlist
local lang = {["qsd"] = "希顶语", ["zxx"] = "纯音乐", ["cmn"] = "国语", ["eng"] = "英语", ["jpn"] = "日语", ["mul"] = "多语种", ["nap"] = "意大利语那不勒斯方言", ["ron"] = "罗马尼亚语", ["yue"] = "粤语", ["kor"] = "朝鲜语", ["rus"] = "俄语"}
function myConcat(l, sep)
sep = sep or "、"
local ret = ""
local bj = 0
for k,v in pairs(l) do
if bj == 0 then
bj = 1
else
ret = ret .. sep
end
ret = ret .. v
end
return ret
end
function multilang(str)
local ret = ""
local bj = 0
for field in str:gmatch("([^,]+)") do
if bj == 0 then
bj = 1
else
ret = ret .. "、"
end
local tmp = field:match("^%s*(.-)%s*$") -- 去除首尾空格
local tmp2 = lang[tmp]
if tmp2 == nil then
ret = ret .. "未知语种(" .. tmp .. ")"
else
ret = ret .. tmp2
end
end
return ret
end
function songInfo(song)
return myConcat(song.singers) .. "的《" .. song.name .. "》"
end
function module.main(frame)
local args = getArgs(frame)
local equalSign = args[1]
if (equalSign == nil) then
equalSign = 3
else
equalSign = tonumber(equalSign)
end
local resTable = {}
local keys = {}
for key in pairs(sl) do
table.insert(keys, tonumber(key))
end
table.sort(keys)
local lastCont = nil
local firstJump = nil
local contStr = "目前所有已填充歌曲编号均连续。"
for i, k in ipairs(keys) do
if i > 1 then
if k - keys[i - 1] > 1 then
lastCont = keys[i - 1]
firstJump = k
break
end
end
end
if lastCont ~= nil then
contStr = "目前已填充歌曲编号直至[[#" .. tostring(lastCont) .. "号歌曲|" .. tostring(lastCont) .. "号]]均连续,按编号下一首已填充歌曲为[[#" .. tostring(firstJump) .. "号歌曲|" .. tostring(firstJump) .. "号]]。"
end
for _, k in ipairs(keys) do
key = k
if sl[key] == nil then
key = tostring(key)
end
v = sl[key]
resTable[k] = k .. "号歌曲是"
if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then
resTable[k] = resTable[k] .. "'''"
end
resTable[k] = resTable[k] .. songInfo(v.song)
if v.placeholding.tier == "none" or v.placeholding.tier == "weak" then
resTable[k] = resTable[k] .. "'''"
end
if v.placeholding.tier ~= "none" then
resTable[k] = resTable[k] .. ",原版为" .. multilang(v.placeholding.language) .. "版:"
if v.placeholding.tier == "strong" then
resTable[k] = resTable[k] .. "'''"
end
resTable[k] = resTable[k] .. songInfo(v.placeholding.song)
if v.placeholding.tier == "strong" then
resTable[k] = resTable[k] .. "'''"
end
end
resTable[k] = resTable[k] .. "。"
local bj1 = 0
for kk, vv in pairs(v.alternatives) do
if bj1 == 0 then
bj1 = 1
resTable[k] = resTable[k] .. "<br/>\n另有"
else
resTable[k] = resTable[k] .. "、"
end
resTable[k] = resTable[k] .. songInfo(vv)
end
if bj1 == 1 then
resTable[k] = resTable[k] .. "等版本。"
end
resTable[k] = resTable[k] .. "\n"
end
local i = 3
while true do
if args[i - 1] == nil or args[i] == nil then
break
end
local key1 = tonumber(args[i - 1])
if resTable[key1] ~= nil then
resTable[key1] = resTable[key1] .. "\n" .. args[i] .. "\n"
end
i = i + 2
end
local outp = "当前歌单数据的版本号为[[荆哲式流水号|" .. ver .. "]]。\n\n目前阶段共收录" .. #keys .. "首歌,编号范围从" .. keys[1] .. "到" .. keys[#keys] .. "。<br/>\n" .. contStr .. "\n"
for _, k in ipairs(keys) do
outp = outp .. string.rep("=", equalSign) .. k .. "号歌曲" .. string.rep("=", equalSign) .. "\n"
outp = outp .. resTable[k] .. "\n"
end
return outp
end
function module.sortable()
local ret = "{| class=\"wikitable sortable\"\n|+ [[荆哲歌单]]默认中文歌曲部分<br/>可排序表格\n|-\n! 编号 !! 歌手 !! 歌名\n"
local keys = {}
for key in pairs(sl) do
table.insert(keys, tonumber(key))
end
table.sort(keys)
for _, k in ipairs(keys) do
key = k
if sl[key] == nil then
key = tostring(key)
end
v = sl[key]
ret = ret .. "|-\n| style=\"text-align:right;\"|" .. tostring(k) .. " || " .. myConcat(v.song.singers, "/") .. " || " .. v.song.name .. "\n"
end
ret = ret .. "|}"
return ret
end
return module