require('Module:No globals')
local getArgs = require('Module:Arguments').getArgs
local mWikidata = require('Modulo:Wikidata')
local p = {}
function p.main(frame)
local t = getArgs(frame)
local dato = t[1]
local tracce = {}
local i
local ss
local wdTracce, wdAutori, wdParole, wdBasatoSu
local ordine, ddato, titolo, durata
wdTracce = mWikidata._getClaims('P658', { from = dato })
if wdTracce then
local num = 0
for _, traccia in ipairs(wdTracce) do
ss = ''
titolo = mWikidata._formatStatement(traccia)
ordine = mWikidata._formatQualifiers(traccia, 'P1545')
num = num + 1
if ordine == nil then
ordine = num
ss = '-'
else
ordine = tonumber(ordine) or num
ss = ordine
end
durata = mWikidata._formatQualifiers(traccia, 'P2047')
if durata == nil then
durata = 'n.d.'
else
durata = tonumber(durata) or 0
if (durata > 59) then
durata = math.floor(durata/60) .. '\' ' .. (durata - 60*math.floor(durata/60)) .. '"'
else
durata = durata .. '"'
end
end
ss = ss .. '. \'\'' .. titolo .. '\'\' (' .. durata .. ')'
if traccia.mainsnak.datavalue.value.id then
ddato = traccia.mainsnak.datavalue.value.id
wdAutori = mWikidata._getClaims('P86', { from = ddato })
if wdAutori then
ss = ss .. ' <small>Comp.: '
i = 1
for _, autore in ipairs(wdAutori) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(autore)
end
ss = ss .. '</small>'
end
wdParole = mWikidata._getClaims('P676', { from = ddato })
if wdParole then
ss = ss .. ' <small>Parol.: '
i = 1
for _, parola in ipairs(wdParole) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(parola)
end
ss = ss .. '</small>'
end
wdBasatoSu = mWikidata._getClaims('P144', { from = ddato })
if wdBasatoSu then
ss = ss .. ' <small>Basato su: '
i = 1
for _, basato in ipairs(wdBasatoSu) do
if (i>1) then ss = ss .. ', ' end
i = i + 1
ss = ss .. mWikidata._formatStatement(basato)
end
ss = ss .. '</small>'
end
end
table.insert(tracce,ordine,ss)
end
end
-- return table.concat(tracce, '<br/>')
ss = ''
for k, v in pairs( tracce ) do
ss = ss .. v .. '<br/>'
end
ss = ss .. ' --- <br/>'
for i=1, #tracce do
ss = ss .. tracce[i].tracce .. '<br/>'
end
return ss
end
return p