Module:Random image:修订间差异

来自Arcaea中文维基
(修改)
(随机选曲时排除已删除曲目)
 
(未显示2个用户的5个中间版本)
第1行: 第1行:
local p = {}
local p = {}
local pagename_escape={
["#"]="#",
["<"]="<",
[">"]=">",
["["]="[",
["]"]="]",
["|"]="|",
["{"]="{",
["}"]="}",
}


function SpecialPageName(pagename)
function SpecialPageName(pagename)
第5行: 第16行:
-- 当页面名和title_localized:en的值不同时,请在这里转换
-- 当页面名和title_localized:en的值不同时,请在这里转换
if pagename=="#1f1e33" then pagename="#1f1e33" end
pagename=string.gsub(pagename,"[#<>%[%]|{}]",pagename_escape)
return pagename
return pagename


end
end
local random=require("Module:Random")


function p.image(frame)
function p.image(frame)


local data = mw.getCurrentFrame():expandTemplate{ title = 'Songlist' }
local songlist=require("Module:Songlist")
local result=mw.text.jsonDecode( data )
local songs={}
for _, v in ipairs( songlist['songs'] ) do
local id=result['songs'][tonumber(frame.args.number)]['id']
if not v['deleted'] then
local title=SpecialPageName(result['songs'][tonumber(frame.args.number)]['title_localized']['en'])
table.insert(songs,v)
end
end
local result="[[file:Songs_"..id..".jpg|256px|link="..title.."]]"
local limit=tonumber(frame.args.count)
if not limit then
limit=5
end
local seq=frame.args.seq
if not seq then
seq="\n"
end
local selected=random.main("array",{t=songs,limit=limit})
local result=""
for i, v in ipairs( selected ) do
if i>1 then
result=result..seq
end
local id=v['id']
local title=SpecialPageName(v['title_localized']['en'])
result=result.."[[file:Songs_"..id..".jpg|100px|link="..title.."]]"
end
return result
return result

2024年12月6日 (五) 14:13的最新版本

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

local p = {}

local pagename_escape={
	["#"]="#",
	["<"]="<",
	[">"]=">",
	["["]="[",
	["]"]="]",
	["|"]="|",
	["{"]="{",
	["}"]="}",
}

function SpecialPageName(pagename)
	-- 请在这里添加页面名转换
	-- 当页面名和title_localized:en的值不同时,请在这里转换
	
	pagename=string.gsub(pagename,"[#<>%[%]|{}]",pagename_escape)
	
	return pagename

end

local random=require("Module:Random")

function p.image(frame)

	local songlist=require("Module:Songlist")
	local songs={}
	for _, v in ipairs( songlist['songs'] ) do
		if not v['deleted'] then
			table.insert(songs,v)
		end
	end
	
	local limit=tonumber(frame.args.count)
	if not limit then
		limit=5	
	end
	local seq=frame.args.seq
	if not seq then
		seq="\n"	
	end
	local selected=random.main("array",{t=songs,limit=limit})
	local result=""
	for i, v in ipairs( selected ) do
		if i>1 then 
			result=result..seq
		end
		local id=v['id']
		local title=SpecialPageName(v['title_localized']['en'])
		result=result.."[[file:Songs_"..id..".jpg|100px|link="..title.."]]"
	end
	
	return result
end

return p