Ir para o conteúdo

Módulo:WikidataCheck

De Wiki TokuDrive
Revisão de 06h33min de 5 de julho de 2026 por Tavoraadmin (discussão | contribs) (Importando predefinição/módulo da Wikipédia em português para manter layout)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)

local p = {}

function p.wikidatacheck(frame) local pframe = frame:getParent() local config = frame.args -- os argumentos passados PELA predefinição, no wikitexto da própria predefinição local args = pframe.args -- os argumentos passados PARA a predefinição, no wikitexto que transclui a predefinição local property = config.property local value = config.value or "" local catbase = config.category local namespaces = config.namespaces local nocatsame = config.nocatsame or "" local ignorecase = config.ignorecase or "" local qid = config.qid or "" local onlysourced = (config.onlysourced == 'yes') or false local ok = false -- marcação de uma só forma para verificar se está em um bom namespace local ns = mw.title.getCurrentTitle().namespace

for v in mw.text.gsplit( namespaces, ",", true) do if tonumber(v) == ns then ok = true end end if not ok then -- não está em um dos namespaces aprovados return "" end local entity if qid == "" then entity = mw.wikibase.getEntityObject() else entity = mw.wikibase.getEntityObject(qid) end if not entity then -- sem item do Wikidata return "" end if value == "" then return nil -- Using Wikidata end local claims = entity.claims or {} local hasProp = claims[property] if not hasProp then -- nenhuma reivindicação sobre essa propriedade return "" -- ruim. Os bots precisam adicionar a propriedade end if ignorecase ~= "" then value = string.lower( value ) end for i, v in ipairs(hasProp) do -- agora, vamos tentar iterar sobre todos os valores possíveis? propValue = (v.mainsnak.datavalue or {}).value if ignorecase ~= "" then propValue = string.lower( propValue ) end local sourced = false -- verificar referências externas ao estilo Módulo:WikidataIB apenas com fontes if v.references then for j, vr in ipairs(v.references) do local ref = mw.wikibase.renderSnaks(vr.snaks) if not ref:find("Wiki") then sourced = true break end end end if propValue == value and (not onlysourced or sourced) then if nocatsame == "" then return "" -- yay! else return nil -- se não houver categoria, a categoria "igual a" não será adicionada end end end return "" -- necessita de revisão humana :( end

return p