Module:ArtistSong:修订间差异
Economy666(讨论 | 贡献) (曲目按时间排序) |
小 (如果模块输出的标题没有MW的编辑特性,那还不如少走一步转译) |
||
(未显示2个用户的29个中间版本) | |||
第1行: | 第1行: | ||
p={} | p={} | ||
local | local CALv2 = mw.loadJsonData 'Template:ComplexArtistsList.json' | ||
local multiId = mw.loadJsonData 'Template:Transition.json'.multiId | local multiId = mw.loadJsonData 'Template:Transition.json'.multiId | ||
local trans = mw.loadJsonData 'Template:Transition.json' | |||
local SL = mw.loadJsonData 'Template:Song Length.json' | |||
local mad = require 'Module:AnotherData' | local mad = require 'Module:AnotherData' | ||
local data = require "Module:Arcaea Data" | local data = require "Module:Arcaea Data" | ||
local CL = require 'Module:ConvertLink' | local CL = require 'Module:ConvertLink' | ||
第14行: | 第16行: | ||
local pickListBYD = {} | local pickListBYD = {} | ||
for _, song in ipairs(mad.listOf('songs', 'mobile')) do | for _, song in ipairs(mad.listOf('songs', 'mobile')) do | ||
local artist = song.artist | if not song.deleted then | ||
local artist = song.artist | |||
pickList[song.id] = song.artist | |||
if song.difficulties[4] and (song.difficulties[4].artist or song.difficulties[4].title_localized) then | |||
local bydArtist = song['difficulties'][4]['artist'] or song.artist | |||
pickListBYD[song['id']] = bydArtist | |||
end | |||
end | |||
end | end | ||
第54行: | 第58行: | ||
end | end | ||
local zhName = {} | |||
local function genList(convertList) | local function genList(convertList) | ||
local function cate(singleList, cArtist, artist) | local function cate(singleList, cArtist, artist) | ||
第72行: | 第77行: | ||
return singleList | return singleList | ||
end | end | ||
local singleList = {} | local singleList = {} | ||
for cArtist in pairs(convertList) do | for cArtist in pairs(convertList) do | ||
if | local artistlist={} | ||
if CALv2[cArtist] then | |||
if CALv2[cArtist].__FullData__ then | |||
for _,text in pairs(CALv2[cArtist].__FullData__) do | |||
if text.link then | |||
if not artistlist[artist] then | local artist = text.link | ||
if not artistlist[artist] then | |||
singleList = cate(singleList, cArtist, artist) | |||
artistlist[artist]=1 | |||
if text.zh then | |||
zhName[artist] = true | |||
end | |||
end | |||
end | |||
end | |||
else | |||
for link in pairs(CALv2[cArtist]) do | |||
local artist = link | |||
if not artistlist[artist] then | |||
singleList = cate(singleList, cArtist, artist) | |||
artistlist[artist]=1 | |||
end | |||
end | |||
end | |||
else | else | ||
singleList = cate(singleList, cArtist) | singleList = cate(singleList, cArtist) | ||
第91行: | 第110行: | ||
end | end | ||
return singleList | return singleList | ||
end | |||
local function isLetter(char) | |||
return char:match("%a") ~= nil | |||
end | end | ||
-- 排序 | -- 排序 | ||
local function customSort(a, b) | local function customSort(a, b) | ||
local a1 = a:sub(1, 1) | local a1 = a:sub(1, 1) | ||
第149行: | 第169行: | ||
bpm = queryMO(id, 'bpm') or queryNS(id, 'bpm') | bpm = queryMO(id, 'bpm') or queryNS(id, 'bpm') | ||
if bpm then return bpm | if bpm then return bpm | ||
else return | else return nil end | ||
end | end | ||
local lang = mw.language.getContentLanguage() | |||
local function songDate(id, byd) | local function songDate(id, byd) | ||
local date, ver | local date, ver | ||
第159行: | 第180行: | ||
end | end | ||
date = queryMO(id, 'date') or queryNS(id, 'date') | date = queryMO(id, 'date') or queryNS(id, 'date') | ||
if date then return date | if date then return date else return 0 end | ||
end | end | ||
第170行: | 第190行: | ||
end | end | ||
ver = queryMO(id, 'version') or queryNS(id, 'version') | ver = queryMO(id, 'version') or queryNS(id, 'version') | ||
if ver then return ver | if ver then return ver else return id end | ||
end | end | ||
第183行: | 第202行: | ||
packid = queryMO(id, 'set') | packid = queryMO(id, 'set') | ||
else | else | ||
return | return nil | ||
end | end | ||
local packName = trans.packName[packid] or mad.packQueryWrap(packid, plat).name | local packName = trans.packName[packid] or mad.packQueryWrap(packid, plat).name | ||
第189行: | 第208行: | ||
return packLink | return packLink | ||
end | end | ||
local function songLength(id,byd) | |||
if byd then | |||
return SL.beyond[id] | |||
else | |||
return SL.normal[id] | |||
end | |||
end | |||
function p.main(frame) | function p.main(frame) | ||
local parentArgs = frame:getParent().args | |||
local Args = frame.args | |||
local rl, rlb = readList() | local rl, rlb = readList() | ||
local cl = convertPick(rl, rlb) | local cl = convertPick(rl, rlb) | ||
第197行: | 第228行: | ||
rl,rlb,cl = nil | rl,rlb,cl = nil | ||
local | local appendList = Args['appendList'] | ||
if appendList then | |||
local list = mw.text.split(appendList,'/') | |||
for _,id in pairs(list) do | |||
local artists = Args[id .. '.'..'artist'] | |||
local artistList = mw.text.split(artists,'/') | |||
for _, artist in pairs(artistList) do | |||
if not gl[artist] then gl[artist]={} end | |||
if not gl[artist].normal then gl[artist].normal={} end | |||
table.insert(gl[artist].normal, id) | |||
end | |||
end | |||
end | |||
local wikiText = "" | local wikiText = "" | ||
local a2z = {} | local a2z = {} | ||
local gl2 = {} | local gl2 = {} | ||
第205行: | 第249行: | ||
local enName | local enName | ||
if mw.ustring.match(name,'[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+') then | if mw.ustring.match(name,'[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+') then | ||
enName = | -- enName = parentArgs[name .. '.enName'] or name--nil | ||
local enHide = parentArgs[name .. '.enHideName'] | |||
local notJaName = parentArgs[name .. '.notJaName'] or zhName[name] | |||
enName = enHide or parentArgs[name .. '.enName'] or name--nil | |||
gl2[enName] = gl[name] | gl2[enName] = gl[name] | ||
gl2[enName].localName = name | gl2[enName].localName = name | ||
if | if enHide then | ||
gl2[enName].enHide = 1 | |||
end | |||
if notJaName then | |||
gl2[enName].notJa = 1 | gl2[enName].notJa = 1 | ||
end | end | ||
第215行: | 第265行: | ||
gl2[enName] = gl[name] | gl2[enName] = gl[name] | ||
end | end | ||
gl2[enName].otherName = | gl2[enName].otherName = parentArgs[name .. '.otherName'] or nil | ||
gl2[enName].description = parentArgs[name .. '.description'] or nil | |||
table.insert(a2z,enName) | table.insert(a2z,enName) | ||
end | end | ||
table.sort(a2z, customSort) | table.sort(a2z, customSort) | ||
-- 生成页首 | |||
local menuName={nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil} | |||
for _, name in ipairs(a2z) do | |||
local catId=27 | |||
local first=string.lower(name:sub(1, 1)) | |||
if isLetter(first) then | |||
catId=string.byte(first)-string.byte("a")+1 | |||
end | |||
if menuName[catId]==nil then | |||
menuName[catId]=name | |||
end | |||
end | |||
if menuName[27]==nil then | |||
menuName[27]="" | |||
end | |||
for i=26,1,-1 do | |||
if menuName[i]==nil then | |||
menuName[i]=menuName[i+1] | |||
end | |||
end | |||
local menu={} | |||
for _, name in ipairs(menuName) do | |||
if gl2[name] then | |||
table.insert(menu,gl2[name].localName or name) | |||
else | |||
table.insert(menu,name) | |||
end | |||
end | |||
wikiText = wikiText .. frame:expandTemplate{ title = "目录", args = menu } .. "\n\n" | |||
local function tableAppend(line,newStr) return line..'|'..newStr..'\n' end | local function tableAppend(line,newStr) return line..'|'..newStr..'\n' end | ||
for _, name in | |||
local function songArg(artist,id,byd,arg) | |||
arg = '.'..arg | |||
artist = artist .. '.' | |||
local function fun(a) return a and artist..a..arg end | |||
if byd then | |||
return parentArgs[fun(queryMO(id, 'bydSongName'))] or parentArgs[fun(id..'.byd')] | |||
else | |||
return parentArgs[fun(queryMO(id, 'title'))] or parentArgs[fun(id)] | |||
end | |||
end | |||
local function aslAppend(artist, songid, date, byd) | |||
local theList={} | |||
local function Input(arg) return songid.. ( byd and '.byd' or '') ..(arg and '.'..arg or '') end | |||
local function aInput(arg) return artist ..'.' .. Input(arg) end | |||
local function none(arg) return '|<span title="'.. aInput(arg) .. '">' .. '--'..'</span>' end | |||
theList.title = ("[[" .. (Args[Input('title')] or songTitle(songid,byd)) .. "]]") or none() | |||
theList.length = Args[Input('length')] or songLength(songid,byd) or none() | |||
theList.bpm = Args[Input('bpm')] or songBPM(songid,byd) or none() | |||
theList.pack = Args[Input('pack')] or songPack(songid) or none() | |||
local releaseVer, releaseDate = CL.fullVersionNum(songVer(songid,byd), date) | |||
local ver = Args[Input('ver')] or releaseVer or none() | |||
theList.date = Args[Input('date')] or releaseDate | |||
local AprilFoolVer = Args[Input('AprilFoolVer')] | |||
theList.AprilFoolDate = Args[Input('AprilFoolDate')] | |||
local afVer | |||
if AprilFoolVer and theList.AprilFoolDate then | |||
afVer = ("'''愚人节'''<br>"..'v'..AprilFoolVer .. '<br />('.. theList.AprilFoolDate .. ")<br>'''常驻'''<br>") or '' | |||
end | |||
theList.displayVer = (afVer or '')..'v'..ver .. '<br />('.. theList.date .. ')' or none() | |||
theList.text = songArg(artist,songid,byd,'text') or none('text') | |||
return theList | |||
end | |||
for _, name in ipairs(a2z) do | |||
local item = gl2[name] | local item = gl2[name] | ||
local displayName, usingName | local displayName, usingName,other | ||
if item.otherName then | |||
other = (' ('..item.otherName..')') or nil | |||
end | |||
if item.localName then | if item.localName then | ||
usingName = item.localName | usingName = item.localName | ||
enDisplay = item.enHide and '' or ' (' .. name ..')' | |||
if item.notJa then | if item.notJa then | ||
displayName = usingName ..' | displayName = usingName .. (other or '') .. enDisplay | ||
else | else | ||
displayName = '<span lang="ja">' .. usingName .. '</span>' ..' | displayName = '-{<span lang="ja">' .. usingName .. '</span>}-' .. (other or '') .. enDisplay | ||
end | end | ||
else | else | ||
usingName = name | usingName = name | ||
displayName = name | displayName = name .. (other or '') | ||
end | end | ||
-- wikiText = wikiText .. '*' .. usingName .. '\n' | |||
wikiText = wikiText .. '<span id="' .. usingName .. '" />\n' | wikiText = wikiText .. '<span id="' .. usingName .. '" />\n' | ||
wikiText = wikiText .. " | wikiText = wikiText .. '<h2><span title="'.. usingName .. '">' .. displayName..'</span></h2>\n' | ||
wikiText = wikiText .. 'Span id: ' .. usingName .."\n" | -- wikiText = wikiText .. 'Span id: ' .. usingName .."\n" | ||
wikiText = wikiText .. '{| class="wikitable" border="1" cellspacing="1" cellpadding="5" style="text-align:center;width: | wikiText = wikiText .. (item.description or '') .. '\n' | ||
wikiText = wikiText .. '{| class="wikitable" border="1" cellspacing="1" cellpadding="5" style="text-align:center;width: 100%"\n' | |||
wikiText = wikiText .. '! style="width: 30.5%;"|曲目名称\n' | wikiText = wikiText .. '! style="width: 30.5%;"|曲目名称\n' | ||
wikiText = wikiText .. '! style="width: | wikiText = wikiText .. '! style="width: 6%;"|时长\n' | ||
wikiText = wikiText .. '! style="width: | wikiText = wikiText .. '! style="width: 10%;"|BPM\n' | ||
wikiText = wikiText .. '! style="width: 18.5%;"|曲包\n' | wikiText = wikiText .. '! style="width: 18.5%;"|曲包\n' | ||
wikiText = wikiText .. '! style="width: 15%;"|发布 | wikiText = wikiText .. '! style="width: 15%;"|发布 版本\n' | ||
wikiText = wikiText .. '! style="width: 20%;"|备注\n' | wikiText = wikiText .. '! style="width: 20%;"|备注\n' | ||
local artistSongList = {} | local artistSongList = {} | ||
第265行: | 第376行: | ||
for _,songid in ipairs(item.normal) do | for _,songid in ipairs(item.normal) do | ||
local date = songDate(songid) | local date = songDate(songid) | ||
local aslId = date..songid | local theList=aslAppend(usingName, songid, date) | ||
artistSongList[aslId]= | local aslId = (theList.AprilFoolDate or theList.date)..songid | ||
artistSongList[aslId] = theList | |||
table.insert(listSort, aslId) | table.insert(listSort, aslId) | ||
end | end | ||
第273行: | 第385行: | ||
for _,songid in ipairs(item.beyond) do | for _,songid in ipairs(item.beyond) do | ||
local date = songDate(songid, 1) | local date = songDate(songid, 1) | ||
local aslId = date..songid..'byd' | local theList = aslAppend(usingName, songid, date, 1) | ||
artistSongList[aslId]= | local aslId = (theList.AprilFoolDate or theList.date)..songid..'byd' | ||
artistSongList[aslId] = theList | |||
table.insert(listSort, aslId) | table.insert(listSort, aslId) | ||
end | end | ||
第281行: | 第394行: | ||
for _,id in ipairs(listSort) do | for _,id in ipairs(listSort) do | ||
wikiText = tableAppend(wikiText, '-') | wikiText = tableAppend(wikiText, '-') | ||
wikiText = tableAppend(wikiText, | local theList = artistSongList[id] | ||
wikiText = tableAppend(wikiText, | wikiText = tableAppend(wikiText, theList.title) | ||
wikiText = tableAppend(wikiText, | wikiText = tableAppend(wikiText, theList.length) | ||
wikiText = tableAppend(wikiText, | wikiText = tableAppend(wikiText, theList.bpm) | ||
wikiText = tableAppend(wikiText, | wikiText = tableAppend(wikiText, theList.pack) | ||
wikiText = tableAppend(wikiText, theList.displayVer) | |||
wikiText = tableAppend(wikiText, theList.text) | |||
end | end | ||
wikiText = wikiText .. "|}\n" | wikiText = wikiText .. "|}\n" |
2024年9月28日 (六) 04:54的最新版本
可在Module:ArtistSong/doc创建此模块的帮助文档
p={}
local CALv2 = mw.loadJsonData 'Template:ComplexArtistsList.json'
local multiId = mw.loadJsonData 'Template:Transition.json'.multiId
local trans = mw.loadJsonData 'Template:Transition.json'
local SL = mw.loadJsonData 'Template:Song Length.json'
local mad = require 'Module:AnotherData'
local data = require "Module:Arcaea Data"
local CL = require 'Module:ConvertLink'
local queryMO = data.allSongInformation("id", "mobile")
local queryNS = data.allSongInformation("id", "ns")
local function readList()
local pickList = {}
local pickListBYD = {}
for _, song in ipairs(mad.listOf('songs', 'mobile')) do
if not song.deleted then
local artist = song.artist
pickList[song.id] = song.artist
if song.difficulties[4] and (song.difficulties[4].artist or song.difficulties[4].title_localized) then
local bydArtist = song['difficulties'][4]['artist'] or song.artist
pickListBYD[song['id']] = bydArtist
end
end
end
for _, song in ipairs(mad.listOf('songs', 'ns')) do
if not pickList[song.id] and not multiId[song.id] then
pickList[song.id] = song.artist
if song.difficulties[4] and song.difficulties[4].artist or song.difficulties[4].title_localized then
local bydArtist = song['difficulties'][4]['artist'] or song.artist
pickListBYD[song['id']] = bydArtist
end
end
end
return pickList, pickListBYD
end
local function convertPick(pickList, pickListBYD)
convertList = {}
for _id,_ in pairs(pickList) do
local artist = pickList[_id]
if not convertList[artist] then convertList[artist] = {} end
if not convertList[artist].normal then convertList[artist]['normal'] = {} end
table.insert(convertList[artist]['normal'], _id)
end
for _id in pairs(pickListBYD) do
local artist = pickListBYD[_id]
if not convertList[artist] then convertList[artist] = {} end
if not convertList[artist].beyond then convertList[artist]['beyond'] = {} end
table.insert(convertList[artist]['beyond'], _id)
end
return convertList
end
local zhName = {}
local function genList(convertList)
local function cate(singleList, cArtist, artist)
local artist = artist or cArtist
if not singleList[artist] then singleList[artist] = {} end
if convertList[cArtist].beyond then
if not singleList[artist].beyond then singleList[artist]['beyond'] = {} end
for _,i in pairs(convertList[cArtist]['beyond']) do
table.insert(singleList[artist]['beyond'],i)
end
end
if convertList[cArtist].normal then
if not singleList[artist].normal then singleList[artist]['normal'] = {} end
for _,i in pairs(convertList[cArtist]['normal']) do
table.insert(singleList[artist]['normal'],i)
end
end
return singleList
end
local singleList = {}
for cArtist in pairs(convertList) do
local artistlist={}
if CALv2[cArtist] then
if CALv2[cArtist].__FullData__ then
for _,text in pairs(CALv2[cArtist].__FullData__) do
if text.link then
local artist = text.link
if not artistlist[artist] then
singleList = cate(singleList, cArtist, artist)
artistlist[artist]=1
if text.zh then
zhName[artist] = true
end
end
end
end
else
for link in pairs(CALv2[cArtist]) do
local artist = link
if not artistlist[artist] then
singleList = cate(singleList, cArtist, artist)
artistlist[artist]=1
end
end
end
else
singleList = cate(singleList, cArtist)
end
end
return singleList
end
local function isLetter(char)
return char:match("%a") ~= nil
end
-- 排序
local function customSort(a, b)
local a1 = a:sub(1, 1)
local b1 = b:sub(1, 1)
local la1 = isLetter(a:sub(1, 1))
local lb1 = isLetter(b:sub(1, 1))
if la1 and not lb1 then
return true
elseif lb1 and not la1 then
return false
elseif string.lower(a1) == string.lower(b1) then
local la2 = isLetter(a:sub(2, 2))
local lb2 = isLetter(b:sub(2, 2))
if la2 and not lb2 then
return true
elseif lb2 and not la2 then
return false
else
return string.lower(a) < string.lower(b)
end
else
return string.lower(a) < string.lower(b)
end
return string.lower(a) < string.lower(b)
end
local function songTitle(id,byd)
local display
local title = queryMO(id, 'title') or queryNS(id, 'title')
if byd then
display = queryMO(id, 'bydSongName') or queryNS(id, 'bydSongName') or 'cant find BYD'
else
display = title
end
local res = trans.songNameToDisplayName[title]
if res then return res..'|'..display end
res = trans.sameName[title]
if res then return res[id]..'|'..display end
if title then return title..'|'..display
else return id end
end
local function songBPM(id, byd)
local bpm
if byd then
bpm = queryMO(id, 'bydBPM') or queryNS(id, 'bydBPM')
if bpm then return bpm end
end
bpm = queryMO(id, 'bpm') or queryNS(id, 'bpm')
if bpm then return bpm
else return nil end
end
local lang = mw.language.getContentLanguage()
local function songDate(id, byd)
local date, ver
if byd then
date = queryMO(id, 'bydDate') or queryNS(id, 'bydDate')
if date then return date end
end
date = queryMO(id, 'date') or queryNS(id, 'date')
if date then return date else return 0 end
end
local function songVer(id, byd)
local date, ver
if byd then
ver = queryMO(id, 'bydVersion') or queryNS(id, 'bydVersion')
if ver then return ver end
end
ver = queryMO(id, 'version') or queryNS(id, 'version')
if ver then return ver else return id end
end
local function songPack(id)
local packid,plat,isNS
-- if queryNS(id, 'set') then
-- packid = queryNS(id, 'set')
-- plat = 'ns'
-- isNS = 1
if queryMO(id, 'set') then
packid = queryMO(id, 'set')
else
return nil
end
local packName = trans.packName[packid] or mad.packQueryWrap(packid, plat).name
local packLink = CL.packLink(packName,1,isNS)
return packLink
end
local function songLength(id,byd)
if byd then
return SL.beyond[id]
else
return SL.normal[id]
end
end
function p.main(frame)
local parentArgs = frame:getParent().args
local Args = frame.args
local rl, rlb = readList()
local cl = convertPick(rl, rlb)
local gl = genList(cl)
rl,rlb,cl = nil
local appendList = Args['appendList']
if appendList then
local list = mw.text.split(appendList,'/')
for _,id in pairs(list) do
local artists = Args[id .. '.'..'artist']
local artistList = mw.text.split(artists,'/')
for _, artist in pairs(artistList) do
if not gl[artist] then gl[artist]={} end
if not gl[artist].normal then gl[artist].normal={} end
table.insert(gl[artist].normal, id)
end
end
end
local wikiText = ""
local a2z = {}
local gl2 = {}
for name in pairs(gl) do
local enName
if mw.ustring.match(name,'[一-龠ぁ-ゔァ-ヴー々〆〤ヶ]+') then
-- enName = parentArgs[name .. '.enName'] or name--nil
local enHide = parentArgs[name .. '.enHideName']
local notJaName = parentArgs[name .. '.notJaName'] or zhName[name]
enName = enHide or parentArgs[name .. '.enName'] or name--nil
gl2[enName] = gl[name]
gl2[enName].localName = name
if enHide then
gl2[enName].enHide = 1
end
if notJaName then
gl2[enName].notJa = 1
end
else
enName = name
gl2[enName] = gl[name]
end
gl2[enName].otherName = parentArgs[name .. '.otherName'] or nil
gl2[enName].description = parentArgs[name .. '.description'] or nil
table.insert(a2z,enName)
end
table.sort(a2z, customSort)
-- 生成页首
local menuName={nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,nil}
for _, name in ipairs(a2z) do
local catId=27
local first=string.lower(name:sub(1, 1))
if isLetter(first) then
catId=string.byte(first)-string.byte("a")+1
end
if menuName[catId]==nil then
menuName[catId]=name
end
end
if menuName[27]==nil then
menuName[27]=""
end
for i=26,1,-1 do
if menuName[i]==nil then
menuName[i]=menuName[i+1]
end
end
local menu={}
for _, name in ipairs(menuName) do
if gl2[name] then
table.insert(menu,gl2[name].localName or name)
else
table.insert(menu,name)
end
end
wikiText = wikiText .. frame:expandTemplate{ title = "目录", args = menu } .. "\n\n"
local function tableAppend(line,newStr) return line..'|'..newStr..'\n' end
local function songArg(artist,id,byd,arg)
arg = '.'..arg
artist = artist .. '.'
local function fun(a) return a and artist..a..arg end
if byd then
return parentArgs[fun(queryMO(id, 'bydSongName'))] or parentArgs[fun(id..'.byd')]
else
return parentArgs[fun(queryMO(id, 'title'))] or parentArgs[fun(id)]
end
end
local function aslAppend(artist, songid, date, byd)
local theList={}
local function Input(arg) return songid.. ( byd and '.byd' or '') ..(arg and '.'..arg or '') end
local function aInput(arg) return artist ..'.' .. Input(arg) end
local function none(arg) return '|<span title="'.. aInput(arg) .. '">' .. '--'..'</span>' end
theList.title = ("[[" .. (Args[Input('title')] or songTitle(songid,byd)) .. "]]") or none()
theList.length = Args[Input('length')] or songLength(songid,byd) or none()
theList.bpm = Args[Input('bpm')] or songBPM(songid,byd) or none()
theList.pack = Args[Input('pack')] or songPack(songid) or none()
local releaseVer, releaseDate = CL.fullVersionNum(songVer(songid,byd), date)
local ver = Args[Input('ver')] or releaseVer or none()
theList.date = Args[Input('date')] or releaseDate
local AprilFoolVer = Args[Input('AprilFoolVer')]
theList.AprilFoolDate = Args[Input('AprilFoolDate')]
local afVer
if AprilFoolVer and theList.AprilFoolDate then
afVer = ("'''愚人节'''<br>"..'v'..AprilFoolVer .. '<br />('.. theList.AprilFoolDate .. ")<br>'''常驻'''<br>") or ''
end
theList.displayVer = (afVer or '')..'v'..ver .. '<br />('.. theList.date .. ')' or none()
theList.text = songArg(artist,songid,byd,'text') or none('text')
return theList
end
for _, name in ipairs(a2z) do
local item = gl2[name]
local displayName, usingName,other
if item.otherName then
other = (' ('..item.otherName..')') or nil
end
if item.localName then
usingName = item.localName
enDisplay = item.enHide and '' or ' (' .. name ..')'
if item.notJa then
displayName = usingName .. (other or '') .. enDisplay
else
displayName = '-{<span lang="ja">' .. usingName .. '</span>}-' .. (other or '') .. enDisplay
end
else
usingName = name
displayName = name .. (other or '')
end
-- wikiText = wikiText .. '*' .. usingName .. '\n'
wikiText = wikiText .. '<span id="' .. usingName .. '" />\n'
wikiText = wikiText .. '<h2><span title="'.. usingName .. '">' .. displayName..'</span></h2>\n'
-- wikiText = wikiText .. 'Span id: ' .. usingName .."\n"
wikiText = wikiText .. (item.description or '') .. '\n'
wikiText = wikiText .. '{| class="wikitable" border="1" cellspacing="1" cellpadding="5" style="text-align:center;width: 100%"\n'
wikiText = wikiText .. '! style="width: 30.5%;"|曲目名称\n'
wikiText = wikiText .. '! style="width: 6%;"|时长\n'
wikiText = wikiText .. '! style="width: 10%;"|BPM\n'
wikiText = wikiText .. '! style="width: 18.5%;"|曲包\n'
wikiText = wikiText .. '! style="width: 15%;"|发布版本\n'
wikiText = wikiText .. '! style="width: 20%;"|备注\n'
local artistSongList = {}
local listSort = {}
if item.normal then
for _,songid in ipairs(item.normal) do
local date = songDate(songid)
local theList=aslAppend(usingName, songid, date)
local aslId = (theList.AprilFoolDate or theList.date)..songid
artistSongList[aslId] = theList
table.insert(listSort, aslId)
end
end
if item.beyond then
for _,songid in ipairs(item.beyond) do
local date = songDate(songid, 1)
local theList = aslAppend(usingName, songid, date, 1)
local aslId = (theList.AprilFoolDate or theList.date)..songid..'byd'
artistSongList[aslId] = theList
table.insert(listSort, aslId)
end
end
table.sort(listSort)
for _,id in ipairs(listSort) do
wikiText = tableAppend(wikiText, '-')
local theList = artistSongList[id]
wikiText = tableAppend(wikiText, theList.title)
wikiText = tableAppend(wikiText, theList.length)
wikiText = tableAppend(wikiText, theList.bpm)
wikiText = tableAppend(wikiText, theList.pack)
wikiText = tableAppend(wikiText, theList.displayVer)
wikiText = tableAppend(wikiText, theList.text)
end
wikiText = wikiText .. "|}\n"
end
return wikiText
end
return p