Hoppa till innehållet

Modul:Robotskapat modultest

Från Wikipedia

Dokumentationen för denna modul kan skapas på Modul:Robotskapat modultest/dok

local landet = {['Amerikanska Samoa'] = 'USA',
				['Anguilla'] = 'Storbritannien', 
				['Antarktis'] = 'Antarktisfördragets område',
				['Bermuda'] = 'Storbritannien',
				['Bouvetön'] = 'Norge',
				['Cooköarna'] = 'Nya Zeeland',
				['Falklandsöarna'] = 'Storbritannien',
				['filippinska kommun'] = 'Filippinerna', -- ett botprojekt som inte följer samma standard som andra geografiartiklar
				['Franska Guyana'] = 'Frankrike',
				['Gibraltar'] = 'Storbritannien',
				['Grönland'] = 'Kungariket Danmark',
				['Guam'] = 'USA',
				['Guernsey'] = 'Storbritannien', -- potentiella problem här i kanalöarna, då det på WD kan finnas olika åsikter om de kan användas med P17
				['Heard- och McDonaldöarna'] = 'Australien',
				['Hongkong'] = 'Kina',
				['Julön'] = 'Australien',
				['Karibiska Nederländerna'] = 'Nederländerna',
				['Kokosöarna'] = 'Australien',
				['Sydgeorgien och Sydsandwichöarna'] = 'Storbritannien',
				['Åland'] = 'Finland'
						}
local undantag = {['Q16521'] = 'taxon',
					['Q310890'] = 'monotypisk taxa',
					['Q17276484'] = 'homonym',
					['Q17487588'] = 'combination', --hybrid?
					['Q17362920'] = 'dublett', 
					['Q245016'] = 'militärbas'
	}

p = {}

function p.wdtest(frame)
	local pframe = frame:getParent();
	local args = pframe.args
	if args[1] ~= 'Lsjbot' or not args[2] or args[2] == '' or args['kollad'] then
		return nil
	end
	local entity = mw.wikibase.getEntityObject()
	if not entity then
		return '[[Kategori:Robotskapade artiklar utan anslutning till Wikidata]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
	end
	local claims = entity.claims
	if not claims then
		return '[[Kategori:Robotskapade artiklar helt utan påståenden]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
	end
	local s = {}
	local p31 = entity:getBestStatements('P31')
	if #p31 == 0 then
		table.insert(s, '[[Kategori:Robotskapade artiklar utan P31]]')
	else -- Plockar bort sådant vi inte ska kolla (taxa, undervattensrev odyl)
		for i, statement in pairs(p31) do
			if statement.mainsnak.snaktype == 'value' then
				local qid = 'Q' .. statement.mainsnak.datavalue.value['numeric-id']
				if undantag[qid] then
					return nil
				end
			end
		end
	end
	
	local p17 = entity:getBestStatements('P17')
	if not p17 or #p17 == 0 then
		table.insert(s, '[[Kategori:Robotskapade artiklar utan P17]]')
	end
	if #p17 > 0 then
		local inom = false
		for i, statement in pairs(p17) do
			if statement.mainsnak.snaktype == 'value' then
				local qid = 'Q' .. statement.mainsnak.datavalue.value['numeric-id']
				local entity2 = mw.wikibase.getEntityObject(qid)
				if entity2.labels.sv then
					local land = entity2.labels.sv.value
					if land == args[2] or land == landet[args[2]] then
						inom = true
					end
				else
					table.insert(s, '[[Kategori:Robotskapade artiklar med P17-uttalanden som saknar svensk label]]')
				end
			end
		end
		if not inom then
			table.insert(s, '[[Kategori:Robotskapade artiklar med olika värden på land här på Wikipedia och på P17]]')
		end
	end
	if #s > 0 then
		table.insert(s, '[[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]')
	end
	return table.concat(s)		
end

function p.dubblett(frame)
	if mw.title.getCurrentTitle().namespace ~= 0 then
		return nil	-- om inte huvudnamnrymden -> returnera nil
	end
	local entity = mw.wikibase.getEntityObject()
	if not entity then
		return '[[Kategori:Robotskapade artiklar utan anslutning till Wikidata]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
	end
	local claims = entity.claims
	if not claims then
		return '[[Kategori:Robotskapade artiklar helt utan påståenden]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
	end
	local s = {}
	local p31 = entity:getBestStatements('P31')
	local p279 = entity:getBestStatements('P279')
	if #p31 + #p279 == 0 then
		return '[[Kategori:Wikipedia:Artiklar som saknar grundläggande Wikidata-egenskap P31/P279]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
	end
	if #p31 > 0 then
		for i, statement in pairs(p31) do
			if statement.mainsnak.snaktype == 'value' then
				local qid = 'Q' .. statement.mainsnak.datavalue.value['numeric-id']
				if qid == 'Q17362920' then
					return '[[Kategori:Wikipedia:Artiklar som Wikidata märkt upp som dubbletter]][[Kategori:Wikipedia:Alla artiklar med åtgärdsbehov relaterade till Wikidata]]'
				end
			end
		end
	end
	return nil
end

return p