Module:Songtable:修订间差异

来自Rotaeno中文维基
无编辑摘要
(IV-α)
第88行: 第88行:
    local imageRowspan;
    local imageRowspan;
    if query("source") then imageRowspan = 13 else imageRowspan = 12 end
    if query("source") then imageRowspan = 13 else imageRowspan = 12 end
 
-- 如果有难度alpha,难度合并列数量增加
local diffColspan;
if query("ratingA") then diffColspan = 5 else diffColspan = 4 end
    -- 分类表
    -- 分类表
    local cat = {}
    local cat = {}
第96行: 第100行:
-- 曲名
-- 曲名
box:tag("tr"):tag("th"):wikitext(nonI18n(Qtitle)):attr("colspan", "6");
box:tag("tr"):tag("th"):wikitext(nonI18n(Qtitle)):attr("colspan", diffColspan + 2);


if args["曲名语言表"]
if args["曲名语言表"]
then
then
   box:tag("tr"):tag("th"):wikitext(nonI18n(args["曲名语言表"])):attr("colspan", "6")
   box:tag("tr"):tag("th"):wikitext(nonI18n(args["曲名语言表"])):attr("colspan", diffColspan + 2)
elseif query("title-list")
elseif query("title-list")
then
then
   box:tag("tr"):tag("th"):wikitext(nonI18n(query("title-list"))):attr("colspan", "6")
   box:tag("tr"):tag("th"):wikitext(nonI18n(query("title-list"))):attr("colspan", diffColspan + 2)
end
end
    
    
    if args["id"]
    if args["id"]
    then
    then
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", "5")
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
     :done():tag("td"):wikitext("[[File:Songs_"..args["id"]..".png|256px]]"):attr("rowspan", imageRowspan)
     :done():tag("td"):wikitext("[[File:Songs_"..args["id"]..".png|256px]]"):attr("rowspan", imageRowspan)
     :css("height", "256px"):css("width", "256px")
     :css("height", "256px"):css("width", "256px")
    elseif query("id")
    elseif query("id")
    then
    then
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", "5")
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
     :done():tag("td"):wikitext("[[File:Songs_"..query("id")..".png|256px]]"):attr("rowspan", imageRowspan)
     :done():tag("td"):wikitext("[[File:Songs_"..query("id")..".png|256px]]"):attr("rowspan", imageRowspan)
     :css("height", "256px"):css("width", "256px")
     :css("height", "256px"):css("width", "256px")
    else
    else
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", "5")
   box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
     :done():tag("td"):wikitext("未指定图片"):attr("rowspan", imageRowspan)
     :done():tag("td"):wikitext("未指定图片"):attr("rowspan", imageRowspan)
     :css("height", "256px"):css("width", "256px")
     :css("height", "256px"):css("width", "256px")
第124行: 第128行:
    if args["曲包"]
    if args["曲包"]
    then
    then
      box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):wikitext(packName(args["曲包"])):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):wikitext(packName(args["曲包"])):attr("colspan", diffColspan)
      table.insert(cat, "[[分类:"..args["曲包"].."曲包曲目]]")
      table.insert(cat, "[[分类:"..args["曲包"].."曲包曲目]]")
    else
    else
      box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):attr("colspan", diffColspan)
    end
    end


第133行: 第137行:
    if args["曲师"]
    if args["曲师"]
    then
    then
      box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(args["曲师"])):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(args["曲师"])):attr("colspan", diffColspan)
    else
    else
      box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(query("artist"))):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(query("artist"))):attr("colspan", diffColspan)
    end
    end


    if args["画师"]
    if args["画师"]
    then
    then
      box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(args["画师"])):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(args["画师"])):attr("colspan", diffColspan)
    else
    else
      box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(query("JacketDesigner"))):attr("colspan", "4")
      box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(query("JacketDesigner"))):attr("colspan", diffColspan)
    end
    end
    
    
第150行: 第154行:
      if args["来源"] 
      if args["来源"] 
      then
      then
        box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(args["来源"]):attr("colspan", "4")
        box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(args["来源"]):attr("colspan", diffColspan)
      else
      else
        box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(query("source")):attr("colspan", "4")
        box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(query("source")):attr("colspan", diffColspan)
      end
      end
    end
    end
    
    
    box:tag("tr"):tag("td"):wikitext("时长"):done():tag("td"):wikitext(args["时长"]):attr("colspan", "4")
    box:tag("tr"):tag("td"):wikitext("时长"):done():tag("td"):wikitext(args["时长"]):attr("colspan", diffColspan)
    
    
    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("谱面信息"):attr("colspan", "5")
    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("谱面信息"):attr("colspan", diffColspan + 1)
    
    
    box:tag("tr"):tag("td"):wikitext("难度"):done()
    if query("ratingA") then
         :tag("td"):wikitext("难度I"):css("color", "#43a047"):done()
   box:tag("tr"):tag("td"):wikitext("难度"):done()
         :tag("td"):wikitext("难度Ⅱ"):css("color", "#1565c0"):done()
         :tag("td"):wikitext("难度I"):css("color", "#43a047"):done()
         :tag("td"):wikitext("难度Ⅲ"):css("color", "#e65100"):done()
         :tag("td"):wikitext("难度Ⅱ"):css("color", "#1565c0"):done()
         :tag("td"):wikitext("难度Ⅳ"):css("color", "#ab47bc")
         :tag("td"):wikitext("难度Ⅲ"):css("color", "#e65100"):done()
        
         :tag("td"):wikitext("难度Ⅳ"):css("color", "#ab47bc"):done()
   if args["谱师"] then
         :tag("td"):wikitext("难度α"):css("color", "#ca8bd5")
     box:tag("tr"):tag("td"):wikitext("谱师"):done():tag("td"):wikitext(args["谱师"]):attr("colspan", "4")
        
   elseif args["难度I谱师"] and args["难度II谱师"] and args["难度III谱师"]and args["难度IV谱师"] then
   if args["谱师"] then
   box:tag("tr"):tag("td"):wikitext("谱师"):done()
     box:tag("tr"):tag("td"):wikitext("谱师"):done():tag("td"):wikitext(args["谱师"]):attr("colspan", diffColspan)
   :tag("td"):wikitext(args["难度I谱师"]):done()
   elseif args["难度I谱师"] and args["难度II谱师"] and args["难度III谱师"] and args["难度IV 谱师"]  and args["难度Alpha 谱师"] then
   :tag("td"):wikitext(args["难度II谱师"]):done()
   box:tag("tr"):tag("td"):wikitext("谱师"):done()
   :tag("td"):wikitext(args["难度III谱师"]):done()
   :tag("td"):wikitext(args["难度I谱师"]):done()
   :tag("td"):wikitext(args["难度IV谱师"]):done()
   :tag("td"):wikitext(args["难度II谱师"]):done()
   :tag("td"):wikitext(args["难度III谱师"]):done()
   :tag("td"):wikitext(args["难度IV谱师"]):done()
   :tag("td"):wikitext(args["难度Alpha谱师"])
   else
   createTable(
   box:tag("tr"):tag("td"):wikitext("谱师"):done(),
   {query("ChartDesigner1"),query("ChartDesigner2"),query("ChartDesigner3"),query("ChartDesigner4"),query("ChartDesignerA"),}
   )
   end
   if args["难度I等级"] and args["难度II等级"] and args["难度III等级"] and args["难度IV等级"] and args["难度Alpha等级"]
   then
     box:tag("tr"):tag("td"):wikitext("等级"):done()
           -- 删除小数
           :tag("td"):wikitext(args["难度I等级"]):done()
           :tag("td"):wikitext(args["难度II等级"]):done()
           :tag("td"):wikitext(args["难度III等级"]):done()
           :tag("td"):wikitext(args["难度IV等级"]):done()
           :tag("td"):wikitext(args["难度Alpha等级"])
           table.insert(cat, "[[分类:难度I中"..args["难度I等级"].."级曲目]]")
           table.insert(cat, "[[分类:难度II中"..args["难度II等级"].."级曲目]]")
           table.insert(cat, "[[分类:难度III中"..args["难度III等级"].."级曲目]]")
           table.insert(cat, "[[分类:难度IV中"..args["难度IV等级"].."级曲目]]")
           table.insert(cat, "[[分类:难度α中"..args["难度Alpha等级"].."级曲目]]")
   else
   if query("rating1")
   then
     box:tag("tr"):tag("td"):wikitext("等级"):done()
           -- 删除小数
           :tag("td"):wikitext(toInteger(query("rating1"))):done()
           :tag("td"):wikitext(toInteger(query("rating2"))):done()
           :tag("td"):wikitext(toInteger(query("rating3"))):done()
           :tag("td"):wikitext(toInteger(query("rating4"))):done()
           :tag("td"):wikitext(toInteger(query("ratingA")))
     if query("title")
     then
       table.insert(cat, "[[分类:难度I中"..toInteger(query("rating1")).."级曲目]]")
       table.insert(cat, "[[分类:难度II中"..toInteger(query("rating2")).."级曲目]]")
       table.insert(cat, "[[分类:难度III中"..toInteger(query("rating3")).."级曲目]]")
       table.insert(cat, "[[分类:难度IV中"..toInteger(query("rating4")).."级曲目]]")
       table.insert(cat, "[[分类:难度α中"..toInteger(query("ratingA")).."级曲目]]")
     end
     end
   end
   box:tag("tr"):tag("td"):wikitext("Note数量"):done()
   :tag("td"):wikitext(args["难度I物量"]):done()
   :tag("td"):wikitext(args["难度II物量"]):done()
   :tag("td"):wikitext(args["难度III物量"]):done()
   :tag("td"):wikitext(args["难度IV物量"]):done()
   :tag("td"):wikitext(args["难度Alpha物量"])
    else
    else
   createTable(
   box:tag("tr"):tag("td"):wikitext(" 难度"):done()
   box:tag("tr"):tag("td"):wikitext(" 谱师"):done(),
         :tag("td"):wikitext("难度I"):css("color", "#43a047"):done()
   {query("ChartDesigner1"),query("ChartDesigner2"),query("ChartDesigner3"),query("ChartDesigner4"),}
         :tag("td"):wikitext(" 难度Ⅱ"):css("color", "#1565c0"):done()
   )
         :tag("td"):wikitext(" 难度Ⅲ"):css("color", "#e65100"):done()
   end
         :tag("td"):wikitext(" 难度Ⅳ"):css("color", "#ab47bc")
 
        
   if args["难度I 等级"] and args["难 度I等级"] and args["难度III 等级"] and args["难度IV 等级"]
   if args["谱师"] then
   then
     box:tag("tr"):tag("td"):wikitext("谱师"):done():tag("td"):wikitext(args["谱师"]):attr("colspan", diffColspan)
     box:tag("tr"):tag("td"):wikitext(" 等级"):done()
   elseif args["难度I 谱师"] and args["难 度II谱师"] and args["难度III 谱师"]and args["难度IV 谱师"] then
           -- 删除小数
   box:tag("tr"):tag("td"):wikitext(" 谱师"):done()
           :tag("td"):wikitext(args["难度I 等级"]):done()
   :tag("td"):wikitext(args["难度I 谱师"]):done()
           :tag("td"):wikitext(args["难度II 等级"]):done()
   :tag("td"):wikitext(args["难度II 谱师"]):done()
           :tag("td"):wikitext(args["难度III 等级"]):done()
   :tag("td"):wikitext(args["难度III 谱师"]):done()
           :tag("td"):wikitext(args["难度IV 等级"])
   :tag("td"):wikitext(args["难度IV 谱师"]):done()
           table.insert(cat, "[[分类: 难度I中"..args[" 难度I等级"].."级曲目]]")
   else
           table.insert(cat, "[[分类:难度II中"..args[" 难度II等级"].." 级曲目]]")
   createTable(
           table.insert(cat, "[[分类:难度III中"..args["难 度III 等级"].."级 曲目]]")
   box:tag("tr"):tag("td"):wikitext(" 谱师"):done(),
           table.insert(cat, "[[分类: 度IV中"..args["难度IV等级"].."级曲目]]")
   {query("ChartDesigner1"),query("ChartDesigner2"),query("ChartDesigner3"),query("ChartDesigner4"),}
   else
   )
   if query("rating1")
   end
   then
   if args["难 度I 等级"] and args[" 难度I等 "] and args["难 度III等级"] and args["难度IV等级"]
   then
     box:tag("tr"):tag("td"):wikitext("等级"):done()
     box:tag("tr"):tag("td"):wikitext("等级"):done()
           -- 删除小数
           -- 删除小数
           :tag("td"):wikitext(toInteger(query("rating1"))):done()
           :tag("td"):wikitext(args["难度I等级"]):done()
           :tag("td"):wikitext(toInteger(query("rating2"))):done()
           :tag("td"):wikitext(args["难度II等级"]):done()
           :tag("td"):wikitext(toInteger(query("rating3"))):done()
           :tag("td"):wikitext(args["难度III等级"]):done()
           :tag("td"):wikitext(toInteger(query("rating4")))
           :tag("td"):wikitext(args["难度IV等级"])
     if query("title")
           table.insert(cat, "[[分类:难度I中"..args["难度I等级"].."级曲目]]")
     then
           table.insert(cat, "[[分类:难度II中"..args["难度II等级"].."级曲目]]")
       table.insert(cat, "[[分类:难度I中"..toInteger(query("rating1")).."级曲目]]")
           table.insert(cat, "[[分类:难度III中"..args["难度III等级"].."级曲目]]")
       table.insert(cat, "[[分类:难度II中"..toInteger(query("rating2")).."级曲目]]")
           table.insert(cat, "[[分类:难度IV中"..args["难度IV等级"].."级曲目]]")
       table.insert(cat, "[[分类:难度III中"..toInteger(query("rating3")).."级曲目]]")
   else
       table.insert(cat, "[[分类:难度IV中"..toInteger(query("rating4")).."级曲目]]")
   if query("rating1")
   then
     box:tag("tr"):tag("td"):wikitext("等级"):done()
           -- 删除小数
           :tag("td"):wikitext(toInteger(query("rating1"))):done()
           :tag("td"):wikitext(toInteger(query("rating2"))):done()
           :tag("td"):wikitext(toInteger(query("rating3"))):done()
           :tag("td"):wikitext(toInteger(query("rating4")))
     if query("title")
     then
       table.insert(cat, "[[分类:难度I中"..toInteger(query("rating1")).."级曲目]]")
       table.insert(cat, "[[分类:难度II中"..toInteger(query("rating2")).."级曲目]]")
       table.insert(cat, "[[分类:难度III中"..toInteger(query("rating3")).."级曲目]]")
       table.insert(cat, "[[分类:难度IV中"..toInteger(query("rating4")).."级曲目]]")
     end
     end
     end
     end
   end
   end
 
   box:tag("tr"):tag("td"):wikitext("Note数量"):done()
   box:tag("tr"):tag("td"):wikitext("Note数量"):done()
   :tag("td"):wikitext(args["难度I物量"]):done()
   :tag("td"):wikitext(args["难度I物量"]):done()
   :tag("td"):wikitext(args["难度II物量"]):done()
   :tag("td"):wikitext(args["难度II物量"]):done()
   :tag("td"):wikitext(args["难度III物量"]):done()
   :tag("td"):wikitext(args["难度III物量"]):done()
   :tag("td"):wikitext(args["难度IV物量"])
   :tag("td"):wikitext(args["难度IV物量"])
end


    box:tag("tr"):tag("td"):wikitext("更新时间"):done():tag("td"):wikitext(args["更新时间"]):attr("colspan", "4")
    box:tag("tr"):tag("td"):wikitext("更新时间"):done():tag("td"):wikitext(args["更新时间"]):attr("colspan", diffColspan)


    if args["更新时间"] then table.insert(cat, "[[分类:时间"..args["更新时间"].."更新的曲目]]") end
    if args["更新时间"] then table.insert(cat, "[[分类:时间"..args["更新时间"].."更新的曲目]]") end
    
    
    box:tag("tr"):tag("td"):wikitext("更新版本"):done():tag("td"):wikitext(args["更新版本"]):attr("colspan", "4")
    box:tag("tr"):tag("td"):wikitext("更新版本"):done():tag("td"):wikitext(args["更新版本"]):attr("colspan", diffColspan)


    if args["更新版本"] then table.insert(cat, "[[分类:版本"..args["更新版本"].."更新的曲目]]") end
    if args["更新版本"] then table.insert(cat, "[[分类:版本"..args["更新版本"].."更新的曲目]]") end

2024年7月25日 (四) 16:50的版本

可在Module:Songtable/doc创建此模块的帮助文档

local p = {}

local data = require("模块:Rotaeno Data");
local yesno = require("Module:Yesno");
local getArgs = require('Module:Arguments').getArgs;

function toInteger(num)
    local a, b = math.modf(num)
    if b > 0.6 and num >= 10
    then
    	return tostring(a).."+"
    else
    	return tostring(a)
    end
end

function packName(name)
    if string.find(name, "%[")
    then
        return name
    else
        return "[["..name.."]]"
    end
end

function createTable(tab,list)
	local max = #list;
	local cur = 1;
	local col = 1;
	local curCell = tab:tag("td"):wikitext(list[1]);
	for i=2, max do
		if list[i] == list[i-1] then
			col = col + 1;
			curCell:attr("colspan", tostring(col))
		else
			curCell = tab:tag("td"):wikitext(list[i]);
			col = 1;
		end
	end
end

function nonI18n(txt)
	return '-{' .. txt .. '}-'
end

function makeInvokeFunc(funcName)
    return function(frame)
        local args = getArgs(frame)
        return p[funcName](args)
    end
end

p.main = makeInvokeFunc('_main')

function p._main(args)
	local frame = mw.getCurrentFrame();
    --生成HTML的主函数

    -- 从参数或者页面名称读取曲目名称
    local songName 
    if args['曲名'] then
        songName = args['曲名']
    else
        songName = mw.text.decode(frame:preprocess("{{FULLPAGENAME}}"))
    end

    -- 如果是从页面名读取的,那可能因为mediawiki限制导致页面名和曲名不符。如果有这个转换规则的话,使用转换JSON进行转换。
    local covList = mw.text.jsonDecode(frame:expandTemplate{ title = 'Transition.json' })["displayNameToSongName"]
    if covList[songName] then songName = covList[songName] end

    -- 生成查找函数。
    local query
    if args['id'] then
        query = data.singleSongInformation(args['id'], "id")
    else
        query = data.singleSongInformation(songName, "name")
    end

	local Qtitle = args["曲名"] or query("title");
	if not(Qtitle)then error('Songlist中无法找到该歌曲信息,请检查Songlist模板是否更新,若更新后仍出现该错误请尝试手动填写id字段。如上述方案均无法解决请联系管理员进行处理。');end -- 防止不明不白的报错
	
	-- DISPLAYTITLE
	if not yesno(args["disableAutoLock"],false) then
		frame:callParserFunction('DISPLAYTITLE', Qtitle, 'noreplace');
	end
	
    -- 如果没有来源一栏的话,图片合并行的数量减少
    local imageRowspan;
    if query("source") then imageRowspan = 13 else imageRowspan = 12 end
	
	-- 如果有难度alpha,难度合并列数量增加
	local diffColspan;
	if query("ratingA") then diffColspan = 5 else diffColspan = 4 end
	
    -- 分类表
    local cat = {}

    -- 拼html,因为内容比较简单,就不像arcaeawiki一样写数据table了。
    local box = mw.html.create("table"):addClass("rotable")
	
	-- 曲名
	box:tag("tr"):tag("th"):wikitext(nonI18n(Qtitle)):attr("colspan", diffColspan + 2);

	if args["曲名语言表"]
	then
	    box:tag("tr"):tag("th"):wikitext(nonI18n(args["曲名语言表"])):attr("colspan", diffColspan + 2)
	elseif query("title-list")
	then
	    box:tag("tr"):tag("th"):wikitext(nonI18n(query("title-list"))):attr("colspan", diffColspan + 2)
	end
    
    if args["id"]
    then
	    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
	        :done():tag("td"):wikitext("[[File:Songs_"..args["id"]..".png|256px]]"):attr("rowspan", imageRowspan)
	        :css("height", "256px"):css("width", "256px")
    elseif query("id")
    then
	    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
	        :done():tag("td"):wikitext("[[File:Songs_"..query("id")..".png|256px]]"):attr("rowspan", imageRowspan)
	        :css("height", "256px"):css("width", "256px")
    else
	    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("曲目信息"):attr("colspan", diffColspan + 1)
	        :done():tag("td"):wikitext("未指定图片"):attr("rowspan", imageRowspan)
	        :css("height", "256px"):css("width", "256px")
	end

    if args["曲包"]
    then
        box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):wikitext(packName(args["曲包"])):attr("colspan", diffColspan)
        table.insert(cat, "[[分类:"..args["曲包"].."曲包曲目]]")
    else
        box:tag("tr"):tag("td"):wikitext("曲包"):done():tag("td"):attr("colspan", diffColspan)
    end


    if args["曲师"]
    then
        box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(args["曲师"])):attr("colspan", diffColspan)
    else
        box:tag("tr"):tag("td"):wikitext("曲师"):done():tag("td"):wikitext(nonI18n(query("artist"))):attr("colspan", diffColspan)
    end

    if args["画师"]
    then
        box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(args["画师"])):attr("colspan", diffColspan)
    else
        box:tag("tr"):tag("td"):wikitext("画师"):done():tag("td"):wikitext(nonI18n(query("JacketDesigner"))):attr("colspan", diffColspan)
    end
    
    -- 来源有可能没有
    if args["来源"] or query("source")
    then
        if args["来源"] 
        then
            box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(args["来源"]):attr("colspan", diffColspan)
        else
            box:tag("tr"):tag("td"):wikitext("来源"):done():tag("td"):wikitext(query("source")):attr("colspan", diffColspan)
        end
    end
    
    box:tag("tr"):tag("td"):wikitext("时长"):done():tag("td"):wikitext(args["时长"]):attr("colspan", diffColspan)
    
    box:tag("tr"):addClass("rotable-title"):tag("th"):wikitext("谱面信息"):attr("colspan", diffColspan + 1)
    
    if query("ratingA") then
    	box:tag("tr"):tag("td"):wikitext("难度"):done()
	                 :tag("td"):wikitext("难度I"):css("color", "#43a047"):done()
	                 :tag("td"):wikitext("难度Ⅱ"):css("color", "#1565c0"):done()
	                 :tag("td"):wikitext("难度Ⅲ"):css("color", "#e65100"):done()
	                 :tag("td"):wikitext("难度Ⅳ"):css("color", "#ab47bc"):done()
	                 :tag("td"):wikitext("难度α"):css("color", "#ca8bd5")
	                 
	    if args["谱师"] then
	        box:tag("tr"):tag("td"):wikitext("谱师"):done():tag("td"):wikitext(args["谱师"]):attr("colspan", diffColspan)
	    elseif args["难度I谱师"] and args["难度II谱师"] and args["难度III谱师"] and args["难度IV谱师"]  and args["难度Alpha谱师"] then
	    	box:tag("tr"):tag("td"):wikitext("谱师"):done()
	    		:tag("td"):wikitext(args["难度I谱师"]):done()
	    		:tag("td"):wikitext(args["难度II谱师"]):done()
	    		:tag("td"):wikitext(args["难度III谱师"]):done()
	    		:tag("td"):wikitext(args["难度IV谱师"]):done()
	    		:tag("td"):wikitext(args["难度Alpha谱师"])
	    else
	    	createTable(
	    		box:tag("tr"):tag("td"):wikitext("谱师"):done(),
	    		{query("ChartDesigner1"),query("ChartDesigner2"),query("ChartDesigner3"),query("ChartDesigner4"),query("ChartDesignerA"),}
	    	)
	    end
	
	    if args["难度I等级"] and args["难度II等级"] and args["难度III等级"] and args["难度IV等级"] and args["难度Alpha等级"]
	    then
	        box:tag("tr"):tag("td"):wikitext("等级"):done()
	                    -- 删除小数
	                    :tag("td"):wikitext(args["难度I等级"]):done()
	                    :tag("td"):wikitext(args["难度II等级"]):done()
	                    :tag("td"):wikitext(args["难度III等级"]):done()
	                    :tag("td"):wikitext(args["难度IV等级"]):done()
	                    :tag("td"):wikitext(args["难度Alpha等级"])
	                    table.insert(cat, "[[分类:难度I中"..args["难度I等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度II中"..args["难度II等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度III中"..args["难度III等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度IV中"..args["难度IV等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度α中"..args["难度Alpha等级"].."级曲目]]")
	    else
	    	if query("rating1")
	    	then
		        box:tag("tr"):tag("td"):wikitext("等级"):done()
		                    -- 删除小数
		                    :tag("td"):wikitext(toInteger(query("rating1"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating2"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating3"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating4"))):done()
		                    :tag("td"):wikitext(toInteger(query("ratingA")))
		        if query("title")
		        then
		            table.insert(cat, "[[分类:难度I中"..toInteger(query("rating1")).."级曲目]]")
		            table.insert(cat, "[[分类:难度II中"..toInteger(query("rating2")).."级曲目]]")
		            table.insert(cat, "[[分类:难度III中"..toInteger(query("rating3")).."级曲目]]")
		            table.insert(cat, "[[分类:难度IV中"..toInteger(query("rating4")).."级曲目]]")
		            table.insert(cat, "[[分类:难度α中"..toInteger(query("ratingA")).."级曲目]]")
		        end
	        end
	    end
	
	    box:tag("tr"):tag("td"):wikitext("Note数量"):done()
	    :tag("td"):wikitext(args["难度I物量"]):done()
	    :tag("td"):wikitext(args["难度II物量"]):done()
	    :tag("td"):wikitext(args["难度III物量"]):done()
	    :tag("td"):wikitext(args["难度IV物量"]):done()
	    :tag("td"):wikitext(args["难度Alpha物量"])
    else
	    box:tag("tr"):tag("td"):wikitext("难度"):done()
	                 :tag("td"):wikitext("难度I"):css("color", "#43a047"):done()
	                 :tag("td"):wikitext("难度Ⅱ"):css("color", "#1565c0"):done()
	                 :tag("td"):wikitext("难度Ⅲ"):css("color", "#e65100"):done()
	                 :tag("td"):wikitext("难度Ⅳ"):css("color", "#ab47bc")
	                 
	    if args["谱师"] then
	        box:tag("tr"):tag("td"):wikitext("谱师"):done():tag("td"):wikitext(args["谱师"]):attr("colspan", diffColspan)
	    elseif args["难度I谱师"] and args["难度II谱师"] and args["难度III谱师"]and args["难度IV谱师"] then
	    	box:tag("tr"):tag("td"):wikitext("谱师"):done()
	    		:tag("td"):wikitext(args["难度I谱师"]):done()
	    		:tag("td"):wikitext(args["难度II谱师"]):done()
	    		:tag("td"):wikitext(args["难度III谱师"]):done()
	    		:tag("td"):wikitext(args["难度IV谱师"]):done()
	    else
	    	createTable(
	    		box:tag("tr"):tag("td"):wikitext("谱师"):done(),
	    		{query("ChartDesigner1"),query("ChartDesigner2"),query("ChartDesigner3"),query("ChartDesigner4"),}
	    	)
	    end
	
	    if args["难度I等级"] and args["难度I等级"] and args["难度III等级"] and args["难度IV等级"]
	    then
	        box:tag("tr"):tag("td"):wikitext("等级"):done()
	                    -- 删除小数
	                    :tag("td"):wikitext(args["难度I等级"]):done()
	                    :tag("td"):wikitext(args["难度II等级"]):done()
	                    :tag("td"):wikitext(args["难度III等级"]):done()
	                    :tag("td"):wikitext(args["难度IV等级"])
	                    table.insert(cat, "[[分类:难度I中"..args["难度I等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度II中"..args["难度II等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度III中"..args["难度III等级"].."级曲目]]")
	                    table.insert(cat, "[[分类:难度IV中"..args["难度IV等级"].."级曲目]]")
	    else
	    	if query("rating1")
	    	then
		        box:tag("tr"):tag("td"):wikitext("等级"):done()
		                    -- 删除小数
		                    :tag("td"):wikitext(toInteger(query("rating1"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating2"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating3"))):done()
		                    :tag("td"):wikitext(toInteger(query("rating4")))
		        if query("title")
		        then
		            table.insert(cat, "[[分类:难度I中"..toInteger(query("rating1")).."级曲目]]")
		            table.insert(cat, "[[分类:难度II中"..toInteger(query("rating2")).."级曲目]]")
		            table.insert(cat, "[[分类:难度III中"..toInteger(query("rating3")).."级曲目]]")
		            table.insert(cat, "[[分类:难度IV中"..toInteger(query("rating4")).."级曲目]]")
		        end
	        end
	    end
	
	    box:tag("tr"):tag("td"):wikitext("Note数量"):done()
	    :tag("td"):wikitext(args["难度I物量"]):done()
	    :tag("td"):wikitext(args["难度II物量"]):done()
	    :tag("td"):wikitext(args["难度III物量"]):done()
	    :tag("td"):wikitext(args["难度IV物量"])
	end

    box:tag("tr"):tag("td"):wikitext("更新时间"):done():tag("td"):wikitext(args["更新时间"]):attr("colspan", diffColspan)

    if args["更新时间"] then table.insert(cat, "[[分类:时间"..args["更新时间"].."更新的曲目]]") end
    
    box:tag("tr"):tag("td"):wikitext("更新版本"):done():tag("td"):wikitext(args["更新版本"]):attr("colspan", diffColspan)

    if args["更新版本"] then table.insert(cat, "[[分类:版本"..args["更新版本"].."更新的曲目]]") end

    return tostring(box)..table.concat(cat)
end

return p