词条 | Module:Sandbox/RexxS/Ranking |
释义 | -- Module to return most recent ranking (P1352) from FIFA (Q180825)-- making use of point in time (P585) local p = {} local i18n = {["errors"] = { ["entity-not-found"] = "Wikidata entity not found.", ["claims-not-found"] = "Wikidata entity has no claims.", ["property-not-found"] = "Property not found.", ["unknown-claim-type"] = "Unknown claim type.", ["unknown-entity-type"] = "Unknown entity type.", ["qualifier-not-found"] = "Qualifier not found.", ["site-not-found"] = "Wikimedia project not found.", ["unknown-datetime-format"] = "Unknown datetime format.", ["ranks-not-found"] = "No ranks found." }, ["months"] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" } } p.getRanking = function(frame) -- allow us to see all values if debugging - set dbg=true as parameter dbug = frame.args.dbg or false -- see if a qid was supplied for arbitrary access; make empty string into nil local qid = mw.text.trim(frame.args.qid or "") if qid and (#qid == 0) then qid = nil end
local entity = mw.wikibase.getEntity(qid) if not entity then return i18n.errors["entity-not-found"] end if not entity.claims then return i18n.errors["claims-not-found"] end local props = entity.claims['P1352'] if not props then return i18n.errors["property-not-found"] end
local rank = {} local timestamp = {} for k, v in pairs(props) do if v.qualifiers and v.qualifiers["P585"] and v.qualifiers["P459"] then if v.qualifiers["P459"][1].datavalue.value.id == "Q180825" then rank[#rank + 1] = v.mainsnak.datavalue.value.amount timestamp[#rank] = v.qualifiers["P585"][1].datavalue.value.time end end end
if rank then local ts = "" local imax = 0 for i, v in ipairs(timestamp) do if v > ts then ts = v imax = i end end
local lastdate = tonumber(ts:sub(10, 11)) .. " " .. i18n.months[tonumber(ts:sub(7, 8))] .. " " .. tonumber(ts:sub(2, 5)) local lastrank = tonumber(rank[imax])
if dbug then return table.concat(rank, ", ") .. " else return lastrank .. " (" .. lastdate .. ")" end else return i18n.errors["ranks-not-found"] end end return p |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。