Fandom

Vocaloid Wiki

Module:Song box conversion

7,913pages on
this wiki
Add New Page
Talk0

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.

local export = {}
local replace = mw.ustring.gsub
local trim = mw.text.trim
local find = mw.ustring.find
local match = mw.ustring.match
local split = mw.text.split
 
--[=[
 
see [[User:Umbreon126/to new song box]] for usage
 
]=]
 
local function convbr(text)
	text = replace(text, ' ?<[Bb][Rr] ?%/?> ?', '\n* ') --[[Module:Reciprocal link test]]
	return text
end
 
function export.show(frame)
	local p = frame.args
	local text = '{{Song box 2'
 
	local image = p['image'] or ''
	local title = p['songtitle'] or ''
	local date = p['uploaddate'] or ''
	local views = p['viewcount'] or ''
	local color = p['color'] or ''
	local singers = p['singer'] or ''
	local producers = p['producer'] or ''
 
	local NN = { 'nn', p['nnd_id'] or '', p['nnd_comment'] or '' }
	local YT = { 'yt', p['yt_id'] or '', p['yt_comment'] or '' }
	local NNx = { 'nn', p['nnd_id2'] or '', p['nnd2_comment'] or '' }
	local YTx = { 'yt', p['yt_id2'] or '', p['yt2_comment'] or '' }
	local BB = { 'bb', p['bb_id'] or '', p['bb_comment'] or '' }
	local PP = { 'pp', p['pp_id'] or '', p['pp_comment'] or '' }
	local PPx = { 'pp', p['piapro_id'] or '', p['piapro_comment'] or '' }
	local SC = { 'sc', p['sc_id'] or '', p['sc_comment'] or '' }
	local FS = { '5s', p['5s_id'] or '', p['5s_comment'] or '' } -- note fs, not 5s
	local MZ = { 'mz', p['mz_id'] or '', p['mz_comment'] or '' }
	local VM = { 'vm', p['vm_id'] or '', p['vm_comment'] or '' }
	local TM = { 'tm', p['tm_id'] or '', p['tm_comment'] or '' }
	local ETC = p['etc'] or '' -- probably a tricky one to handle
 
	-- color = replace(color, ' *; *color: *', '; ')
	color = replace(color, ' *; *color: *', '; color:')
	color = replace(color, ';$', '')
	title, singers, producers = convbr(title), convbr(singers), convbr(producers)
 
--[[
	local TEMP = { title, singers, producers }
	for param, text in pairs(TEMP) do
		if find(text, '<') then return('<span class="error">◆◆Please check input for ' .. param .. '◆◆</span><br><pre>' .. mw.text.nowiki(text) .. '</pre>') end
	end
]]
 
	local LINKS = { NN, YT, NNx, YTx, BB, PP, PPx, SC, FS, MZ, VM, TM }
	local honke = {}
	local tensai = {}
	for i, datas in pairs(LINKS) do
		if datas[2] ~= '' then -- if video link
			if datas[3] ~= '' then -- if comment
				if find(datas[3], 'sub') or find(datas[3], 'reprint') then -- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!TODO: what about "authorized reprint"
					table.insert(tensai, '{{l|' .. datas[1] .. '|' .. datas[2] .. '|' .. datas[3] .. '}}')
				else
					table.insert(honke, '{{l|' .. datas[1] .. '|' .. datas[2] .. '|' .. datas[3]  .. '}}')
				end
			else
				table.insert(honke, '{{l|' .. datas[1] .. '|' .. datas[2] .. '}}')
			end
		end
	end
	honke = table.concat(honke, ' ') .. ETC
	tensai = table.concat(tensai, ' ')
	if honke == '' then honke = nil end
	if tensai == '' then tensai = nil end
	if tensai and not honke then
		honke = tensai
		tensai = nil
	end
 
	if find(views, '%(') then
		views = replace(views, ', and', '◆')
		views = replace(views, ', &', '◆')
		views = replace(views, 'and', '◆')
		views = replace(views, ', ', '◆')
		views = replace(views, '&', '◆')
		views = replace(views, '/', '◆')
		views = replace(views, '+', '')
		views = replace(views, 'NND', 'nn')
		views = replace(views, '([0-9,]+) *%((..)%)', '{{v|%2|%1}}')
		views = mw.ustring.lower(views)
		views = replace(views, ' *◆ *', '◆')
	else
		if honke then
			views = '{{v|' .. match(honke, '{{l|(..)') .. '|' .. replace(views, '+', '') .. '}}'
		end
	end
	views = split(views, '◆')
	if #views == 2 then
		views = views[1] .. ' and ' .. views[2]
	else
		views = mw.text.listToText(views, ', ', ', and ')
	end
 
	text = text .. '\n  |color     = ' .. color
	text = text .. '\n  |image     = ' .. image
	text = text .. '\n  |title     = ' .. title
	text = text .. '\n  |date      = ' .. date
	text = text .. '\n  |views     = ' .. views
	text = text .. '\n  |singers   = ' .. singers
	text = text .. '\n  |producers = ' .. producers
	text = text .. '\n  |links     = ' .. (honke and honke or '')
	text = text .. (tensai and '\n* ' .. tensai or '')
	text = text .. '\n}}'
 
	return text
end
 
return export

Also on Fandom

Random Wiki