跳转到内容

Module:Song:修订间差异

此后如竟没有炬火,我便是唯一的光。
荆哲留言 | 贡献
无编辑摘要
荆哲留言 | 贡献
无编辑摘要
 
(未显示同一用户的32个中间版本)
第5行: 第5行:
local ver = slJson.version
local ver = slJson.version
local sl = slJson.songlist
local sl = slJson.songlist
local lang = {["qsd"] = "希顶语", ["zxx"] = "纯音乐", ["cmn"] = "国语", ["eng"] = "英语", ["jpn"] = "日语", ["mul"] = "多语种", ["nap"] = "意大利语那不勒斯方言", ["ron"] = "罗马尼亚语", ["yue"] = "粤语"}


function myConcat(l)
function myConcat(l, sep)
sep = sep or "、"
local ret = ""
local ret = ""
local bj = 0
local bj = 0
第13行: 第15行:
bj = 1
bj = 1
else
else
ret = ret .. "、"
ret = ret .. sep
end
end
ret = ret .. v
ret = ret .. v
第20行: 第22行:
end
end


function module.list(frame)
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]
第29行: 第55行:
end
end
local resTable = {}
local resTable = {}
for k,v in pairs(sl) do
local keys = {}
resTable[k] = k .. " 号歌曲是"
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
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] .. myConcat(v.song.singers) .. "的《" .. v.song.name .. "》"
resTable[k] = resTable[k] .. songInfo(v.song)
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
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 = "当前歌单数据的版本号为 " .. ver .. "。\n"
local i = 3
for k,v in pairs(resTable) do
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 .. string.rep("=", equalSign) .. k .. "号歌曲" .. string.rep("=", equalSign) .. "\n"
outp = outp .. v .. "\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

2025年3月31日 (一) 18:09的最新版本

此模块的文档可以在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"] = "粤语"}

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