Module:Sandbox/Alex.osheter/listtest
local p = {}
function parseDate(totalSeconds)
local seconds = math.fmod(tonumber(totalSeconds),60)
local minutes = math.floor(tonumber(totalSeconds) / 60)
local hours = math.floor(minutes / 60)
if hours == 0 then
return string.format("%d:%02d", minutes, seconds)
else
return string.format("%d:%02d:%02d", hours, minutes, seconds)
end
end
function p.parseNames(frame)
local wikiEntity = mw.wikibase.getEntity()
if frame.args[1] == "{{{from}}}" then
if (wikiEntity:getAllStatements( 'tracklist' ) == nil) then return end
else
wikiEntity = mw.wikibase.getEntity( frame.args[1] )
end
local funcArgs = {}
for index, table in pairs(wikiEntity:getAllStatements( 'tracklist' )) do
local trackEntity = mw.wikibase.getEntity( table["mainsnak"]["datavalue"]["value"]["id"] )
if trackEntity:getSitelink() == nil then
funcArgs["title" .. index] = trackEntity:getLabel()
else
funcArgs["title" .. index] = frame:preprocess( "[[" .. trackEntity:getSitelink() .. "|" .. trackEntity:getLabel() .. "]]")
end
if table["qualifiers"] ~= nil then
if table["qualifiers"]["P2047"] ~= nil then
local timeInSeconds = table["qualifiers"]["P2047"][1]["datavalue"]["value"]["amount"]
funcArgs["length" .. index] = parseDate(timeInSeconds)
end
end
end
if wikiEntity:getAllStatements( 'duration' ) ~= nil then
local totalTime = tonumber(wikiEntity:getAllStatements( 'duration' )[1]["mainsnak"]["datavalue"]["value"]["amount"])
funcArgs["total_length"] = parseDate(totalTime)
end
return frame:expandTemplate{ title = 'tracklist', args = funcArgs }
end
return p