Hopp til innhold

Modul:WikidataBilde

Fra Wikipedia, den frie encyklopedi

localp={}

functiondump(out)
iftype(out)=='table'then
locals='{ '
fork,vinpairs(out)do
iftype(k)~='number'thenk=' "'..k..' "'end
s=s..'['..k..'] = '..dump(v)..','
end
returns..'} '
else
returntostring(out)
end
end

localkategori={[5]="biografi"}
localresten="[[Kategori:Artikler hvor bilde er hentet fra Wikidata]]"

functiongetProp(qid,pid)
localentity=mw.wikibase.getEntity(qid)

ifnotentitythen

return{}

end
returnentity:getBestStatements(pid)
end


functionfinnKategori(frame)
ifnotmw.wikibasethen
returnresten
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
returnresten
end
localclaims=artikkel:getBestStatements('P31')
ifnotclaimsthen
returnresten
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='wikibase-item'then
localdata=snak.datavalue
ifdata.type=='wikibase-entityid'then
localvalue=data.value
ifvalue["entity-type"]=="item"then
ifkategori[value["numeric-id"]]then
return"[[Kategori:Artikler hvor bilde er hentet fra Wikidata –"..kategori[value["numeric-id"]].."]]"
end
end
end
end
end
end
end

-- failed to find correct type
returnresten
end

-- Return bilde til artikkelen
functionp.wikidatabilde(frame)
ifnotmw.wikibasethen
return""
end
localpid=frame.args["pid"]ornil
ifnotpidthenpid="P18"end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return""
end
localclaims=artikkel:getBestStatements(pid)
ifnotclaimsthen
return""
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
returndata.value
end
end
end
end
end

-- failed to find correct type
return""
end

functionp.framebilde(frame)
localargs=frame.args
ifargs[1]==nilthen
localpFrame=frame:getParent();
args=pFrame.args;
fork,vinpairs(frame.args)do
args[k]=v;
end
end
ifargs['bilde']then
returnargs['bilde']
end
return""
end

functionp.framekart(frame)
localargs=frame.args
ifargs[1]==nilthen
localpFrame=frame:getParent();
args=pFrame.args;
fork,vinpairs(frame.args)do
args[k]=v;
end
end
ifargs['kart']then
returnargs['kart']
end
return""
end

functionp.velgbilde(frame)
localbilde=p.framebilde(frame)
ifbildethen
ifbilde==""then
-- return ""
elseifbilde=="uten"then
return""
else
returnbilde
end
else
return""
end
localfrawikidata=p.wikidatabilde(frame)
localframekart=p.framekart(frame)
ifframekart==frawikidatathen
return""
end

returnfrawikidata
end

functionp.bildetekst(frame)

ifnotmw.wikibasethen
return''
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return''
end
localclaims=artikkel:getBestStatements('P18')
ifnotclaimsthen
return''
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
localq=v.qualifiers
ifqthen
wdcaptions=q['P2096']
end
ifwdcaptionsthen
fork,linpairs(wdcaptions)do
ifl.datavalue.valueandl.datavalue.value.textandl.datavalue.value.language=='nb'then
returnl.datavalue.value.text
end
end
end
end
end
end
end
end

-- failed to find correct type
return''

end
functionp.byline(frame)

ifnotmw.wikibasethen
return''
end
localartikkel=mw.wikibase.getEntityObject()
ifnotartikkelthen
return''
end
localclaims=artikkel:getBestStatements('P18')
ifnotclaimsthen
return''
end
for_,vinipairs(claims)do
ifv.type=='statement'then
localsnak=v.mainsnak
ifsnak.snaktype=='value'then
ifsnak.datatype=='commonsMedia'then
localdata=snak.datavalue
ifdata.type=='string'then
localq=v.qualifiers
ifqthen
wdcaptions=q['P2093']
end
ifwdcaptionsthen
fork,linpairs(wdcaptions)do
ifl.datavalue.valueandl.datavalue.value.textthen
returnl.datavalue.value.text
end
end
end
end
end
end
end
end

-- failed to find correct type
return''

end

functionp.finnesbildeiartikkel(frame)
localinnhold=mw.title.getCurrentTitle():getContent()or''
localfrawikidata=p.wikidatabilde(frame):gsub("[%-%+%*%?%^%%%(%)]","%%%0")-- Erstatter visse spesialtegn (spesialtegn for Lua) med escapede versjoner av samme spesialtegn
frawikidata=frawikidata:gsub("[_ ]","[_ ]")-- Erstatter understrek eller mellomrom med mønsteret [_ ], så søket nedenfor finner begge varianter
ifinnhold:find(":"..frawikidata)then
return"[[Kategori:Artikler hvor bilde fra Wikidata også brukes utenfor infoboks]]"
else
return""
end
end

functionp.sammenlignbilde(frame)
localfraframe=p.framebilde(frame)
localfrawikidata=p.wikidatabilde(frame)
iffraframe==frawikidatathen
iffraframe==""then
return""
else
return"[[Kategori:Artikler hvor bilde er samme som på Wikidata]]"
end
else
iffrawikidata==""then
return"[[Kategori:Artikler hvor bilde mangler på Wikidata]]"
end
iffraframe==""then
return"[[Kategori:Artikler uten bilde i infoboks med bilde på Wikidata]]"
end
return"[[Kategori:Artikler med bilde forskjellig fra Wikidata]]"
end
end

functionp.sammenlignMedWikidataValgtBilde(frame)
localfraframe=p.framebilde(frame)
localfrawikidata=p.wikidatabilde(frame)
localframekart=p.framekart(frame)
localfinnesbildeiartikkel=p.finnesbildeiartikkel(frame)
iffraframe==frawikidatathen
iffraframe==""then
return""
else
return
end
else
iffrawikidata==""then
return"[[Kategori:Artikler hvor bilde mangler på Wikidata]]"
end
ifframekart==frawikidatathen
return"[[Kategori:Artikler hvor kart er samme som bilde på Wikidata]]"
end
iffraframe==""then
returnfinnKategori(frame)..finnesbildeiartikkel
end
return"[[Kategori:Artikler med bilde forskjellig fra Wikidata]]"
end
end

functionbilde(snak)
assert(snak)

localitem=nil

ifsnak.snaktype=="value"andsnak.datatype=="commonsMedia"then

value=snak.datavalue.valueornil
end
returnvalue
end

-- returnerer en rad for overskrift og en avsluttning hvis det er nødvendig
functionformatOverskrift(overskrift,kollaps)
localoversk=""
localavslutt=""
ifoverskriftandoverskrift~=""then
oversk=string.format([[
<tr class= "overskrift" valign= "top" ><td colspan= "4" >%s</td></tr>
]],overskrift)
end
ifkollapsandkollaps~=""then
end
returnoversk,avslutt
end

functionformatBilderad(value)
returnstring.format([[
<tr class= "bilde" valign= "top" ><td colspan= "4" class= "sentrert" >%s</td></tr>
]],value)
end

functionp.bilde(qid,pid)
localprop=getProp(qid,pid)
ifnotpropornotprop[1]ornotprop[1].mainsnakthen
return""
end
returnbilde(prop[1].mainsnak)
end

functionbildetekst(qualifier)
localP2096=nil
ifqualifierthen
P2096=qualifier['P2096']
end
ifP2096then
fork,linpairs(P2096)do
ifl.datavalueandl.datavalue.valueandl.datavalue.value.textandl.datavalue.value.language=='nb'then
returnl.datavalue.value.text
end
end
end
returnnil
end

functionbyline(qualifier)
localP2093=nil
ifqualifierthen
P2093=qualifier['P2093']
end
ifP2093then
fork,linpairs(P2093)do
ifl.datavalueandl.datavalue.valuethen
return"Foto:"..l.datavalue.value
end
end
end
returnnil
end

functionfmtBilde(bilde,bildetekst,byline,size,alttekst)
localtekst=""
localpix=sizeor""
localalt=""
ifalttekstandalttekst~=""then
alt="|alt="..alttekst
end
ifbildethen
tekst="[[fil:"..-- mw.wikibase.formatValue(snak)
bilde.."|center|"..pix.."|frameless"..alt.."]]"
end
ifbildetekstorbylinethen
tekst=tekst..'<div class= "thumbcaption" >'
end
ifbildetekstthen
tekst=tekst..bildetekst
end
ifbylinethen
tekst=tekst..mw.getCurrentFrame():extensionTag{name='templatestyles',args={src='Byline/stil.css'}}..'<div class= "byline" >'..byline.."</div>"
end
ifbildetekstorbylinethen
tekst=tekst..'</div>'
end
tekst=formatBilderad(tekst)
returntekst
end

functionp.bildeFraWikidata(qid,pid,pix,alttekst)
localprop=getProp(qid,pid)
ifnotpropthen
return""
end
ifnotprop[1]then
return""
end
ifnotprop[1].mainsnakthen
return""
end
localbildet=bilde(prop[1].mainsnak)
localbildeteksten=bildetekst(prop[1].qualifiers)
localbyline=byline(prop[1].qualifiers)
returnfmtBilde(bildet,bildeteksten,byline,pix,alttekst)
end


functionp._bildeOgTekst(qid,pid,bilde,bildetekst,byline,pix,alttekst,overskrift)
ifbildeandbilde=="uten"then
return""
end
localoverskriftRad,avslutning="",""
ifoverskriftandoverskrift~=""then
overskriftRad,avslutning=formatOverskrift(overskrift)
end
localbilderad=""
ifbildeandbilde~=""then
bilderad=fmtBilde(bilde,bildetekst,byline,pix,alttekst)
else
bilderad=p.bildeFraWikidata(qid,pid,pix,alttekst)
end
ifbilderad~=""then
returnoverskriftRad..bilderad..avslutning
end
return""
end

functionp.bildeOgTekst(frame)
localqid=frame.args["qid"]ornil
ifqid==""then
qid=nil
end
localpid=frame.args["pid"]ornil
localbilde=frame.args["bilde"]ornil
localbildetekst=frame.args["bildetekst"]ornil
localbyline=frame.args["byline"]ornil
localpix=frame.args["bildestørrelse"]or""
localoverskrift=frame.args["overskrift"]or""
localalttekst=frame.args["alttekst"]or""
returnp._bildeOgTekst(qid,pid,bilde,bildetekst,byline,pix,alttekst,overskrift)
end

returnp