跳转到内容
主菜单
主菜单
移至侧栏
隐藏
导航
首页
最近更改
随机页面
社群首页
帮助
希顶相关网站
希顶社区官网
(原作)希顶翻译器
〇改希顶转写器
希顶模组服务器
搜索
搜索
外观
创建账号
登录
个人工具
创建账号
登录
查看“︁Module:Song”︁的源代码
模块
讨论
English
阅读
查看源代码
查看历史
工具
工具
移至侧栏
隐藏
操作
阅读
查看源代码
查看历史
常规
链入页面
相关更改
特殊页面
页面信息
外观
移至侧栏
隐藏
←
Module:Song
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
用户
、storagereadable
您必须确认您的电子邮件地址才能编辑页面。请通过
参数设置
设置并确认您的电子邮件地址。
您可以查看和复制此页面的源代码。
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"] = "粤语"} 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) 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] .. "。\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
调试控制台
* 此模块的返回的值存于控制台变量“p”中,包括没有保存的变更。 * 在一行的前面加上“=”可以将其作为表达式来计算或使用print()显示。显示表格请使用mw.logObject()。 * 在模块代码中使用mw.log()和mw.logObject()来向控制台发送消息。
该页面使用的模板:
Module:Song/doc
(
查看源代码
)
返回
Module:Song
。