1,124
个编辑
小 (模板试验) |
小 (version support) |
||
第6行: | 第6行: | ||
local function opt(format, value, default) | local function opt(format, value, default) | ||
return value and format:format(tostring(value)) or default | return value and format:format(tostring(value)) or default | ||
end | |||
local versions = {date = {}, name = {}} | |||
local function verQuery(mDate) | |||
local dDate = tonumber(lang:formatDate('Ynj', '@' .. mDate)) | |||
local dates = versions.date | |||
local l, r = 1, #dates | |||
while l <= r do | |||
local index = math.floor((l + r) / 2) | |||
if dDate == dates[index] then | |||
return versions.name[index] | |||
elseif dDate < dates[index] then | |||
r = index - 1 | |||
else | |||
l = index + 1 | |||
end | |||
end | |||
return '?' | |||
end | end | ||
第13行: | 第31行: | ||
local function main(plat, frame) | local function main(plat, frame) | ||
local lSong = mad.listOf('songs', plat) | local lSong = mad.listOf('songs', plat) | ||
local mid = {} | local mid = {} | ||
for _, song in ipairs(lSong) do | for _, song in ipairs(lSong) do | ||
local id = song.id | local id = song.id | ||
local function input(...) return frame.args[ | local function input(...) return frame.args[table.concat({id, ...}, '.')] end | ||
if id ~= 'lasteternity' then | if id ~= 'lasteternity' then | ||
local query = mad.songQueryWrap(song) | local query = mad.songQueryWrap(song) | ||
第38行: | 第53行: | ||
end | end | ||
table.insert(row, title) | table.insert(row, title) | ||
table.insert(row, input '音乐家' or mw.ustring.gsub(song.artist, '[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+', function(v) | table.insert(row, input '音乐家' or mw.ustring.gsub(song.artist, '[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+', function(v) return langJa:format(v) end)) | ||
table.insert(row, input '所属曲包' or packItem['name']) | table.insert(row, input '所属曲包' or packItem['name']) | ||
local bpm = input 'BPM' or song.bpm_base | local bpm = input 'BPM' or song.bpm_base | ||
第46行: | 第59行: | ||
table.insert(row, input '时长' or ' - ') | table.insert(row, input '时长' or ' - ') | ||
if plat ~= 'ns' then | if plat ~= 'ns' then | ||
table.insert(row, song.version .. '.') | local version = input '收录版本' or verQuery(song.date) | ||
table.insert(row, song.version .. '.' .. version) | |||
end | end | ||
for idx, key in ipairs {'PST', 'PRS', 'FTR', 'BYD'} do | for idx, key in ipairs {'PST', 'PRS', 'FTR', 'BYD'} do | ||
第73行: | 第87行: | ||
end | end | ||
function p.mobile(frame) return main('mobile', frame:getParent()) end | function p.mobile(frame) | ||
for record in mw.text.gsplit(frame.args.versions) do | |||
local date, name = record:match '(%d+):(.*)' | |||
table.insert(versions.date, tonumber(date)) | |||
table.insert(versions.name, name) | |||
end | |||
return main('mobile', frame:getParent()) | |||
end | |||
function p.ns(frame) return main('ns', frame:getParent()) end | function p.ns(frame) return main('ns', frame:getParent()) end | ||
return p | return p |
个编辑