Module:Cultural Heritage Finland wikidata id
Jump to navigation
Jump to search
Lua
Documentation for this module may be created at Module:Cultural Heritage Finland wikidata id/doc
Code
local wlm = {}
-- Example usage:
-- {{#invoke:Cultural Heritage Finland wikidata id|get|wikidata=Q9321305}}
-- {{#invoke:Cultural Heritage Finland wikidata id|get|wikidata=Q30506316}}
-- Render Wikidata and rkylinks
function render_row(wikidata, rky)
label="";
details="";
delim=" - "
if wikidata == nil or wikidata == "" then
return "";
end
label="{{WikidataItem|" .. wikidata .. "}}";
if rky then
details=delim .. details .. " [http://www.rky.fi/read/asp/r_kohde_det.aspx?KOHDE_ID=" .. rky .." RKY: " .. rky .."]";
delim="; ";
end
ret="{{Autotranslate|base=Cultural Heritage Finland|1=".. label .. details .."}}";
return ret
end
-- Function tries to get items P373 value from wikidata
-- If P373 doesn't exist then it loops through properties
-- and tries to get their P373 values.
function wlm.get(frame)
local id= frame.args['wikidata']
local out="";
local valid_wlm_target=false;
if id == nil or id == "" then
entity = mw.wikibase.getEntityObject()
else
entity = mw.wikibase.getEntityObject(id);
end
if not entity or not entity.claims then
return nil
end
-- use direct P4009 value if it exists
if entity.claims["P4009"] then
for i, j in pairs(entity.claims["P4009"]) do
out=out .. render_row(id, j["mainsnak"]["datavalue"]["value"])
valid_wlm_target=true;
end
else
out=out .. render_row(id)
end
if (entity.claims["P361"]) then
for p, claim in pairs(entity.claims["P361"]) do
if claim["mainsnak"]["datatype"]=="wikibase-item" then
tmp_id=claim["mainsnak"]["datavalue"]["value"]["id"]
claim_entity = mw.wikibase.getEntityObject(tmp_id);
if claim_entity and claim_entity.claims and claim_entity.claims["P4009"] then
for i, j in pairs(claim_entity.claims["P4009"]) do
out=out .. render_row(tmp_id, j["mainsnak"]["datavalue"]["value"])
valid_wlm_target=true;
end
else
out=out .. render_row(tmp_id)
end
end
end
end
if valid_wlm_target==false then
out=out .."[[Category:Cultural heritage monuments in Finland with unknown IDs]]";
end
if not entity.claims["P18"] then
out = out .. "[[Category:Cultural heritage monuments in Finland without image in Wikidata]]"
end
return frame:preprocess(out);
end
return wlm