<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AVideo_game_wikidata</id>
	<title>Module:Video game wikidata - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mywikibiz.com/index.php?action=history&amp;feed=atom&amp;title=Module%3AVideo_game_wikidata"/>
	<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Video_game_wikidata&amp;action=history"/>
	<updated>2026-06-15T16:53:14Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.3</generator>
	<entry>
		<id>https://mywikibiz.com/index.php?title=Module:Video_game_wikidata&amp;diff=479981&amp;oldid=prev</id>
		<title>Zoran: Pywikibot 6.4.0</title>
		<link rel="alternate" type="text/html" href="https://mywikibiz.com/index.php?title=Module:Video_game_wikidata&amp;diff=479981&amp;oldid=prev"/>
		<updated>2021-07-16T07:56:10Z</updated>

		<summary type="html">&lt;p&gt;Pywikibot 6.4.0&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local Date = require('Module:Date')._Date&lt;br /&gt;
local yesno = require('Module:Yesno')&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Local variables.&lt;br /&gt;
local reviewer = nil;&lt;br /&gt;
local df = &amp;quot;mdy&amp;quot;;&lt;br /&gt;
local entity = nil;&lt;br /&gt;
local genRefs = true;&lt;br /&gt;
local showSystem = true;&lt;br /&gt;
local showUpdateLink = true;&lt;br /&gt;
local system = nil;&lt;br /&gt;
local systemId = nil;&lt;br /&gt;
local systemFormat = &amp;quot;colon&amp;quot;;&lt;br /&gt;
local updateLinkStyle = nil;&lt;br /&gt;
local entities = {};&lt;br /&gt;
&lt;br /&gt;
-- Translation table for converting numeric-IDs to shorthand aliases.&lt;br /&gt;
local systemAliases = {&lt;br /&gt;
	[10677] = 'PS1',&lt;br /&gt;
	[1323662] = 'PS1', -- Placeholder, this is actually the series but could be mistakenly used for PS1.&lt;br /&gt;
	[10680] = 'PS2',&lt;br /&gt;
	[10683] = 'PS3',&lt;br /&gt;
	[5014725] = 'PS4',&lt;br /&gt;
	[16338] = 'PC',&lt;br /&gt;
	[8079] = 'Wii',&lt;br /&gt;
	[56942] = 'WiiU',&lt;br /&gt;
	[132020] = 'XBOX',&lt;br /&gt;
	[48263] = 'X360',&lt;br /&gt;
	[13361286] = 'XONE',&lt;br /&gt;
	[203597] = '3DS',&lt;br /&gt;
	[188808] = 'PSV',&lt;br /&gt;
	[170323] = 'DS', -- Sometimes has been NDS&lt;br /&gt;
	[170325] = 'PSP',&lt;br /&gt;
	[48493] = 'IOS', -- iOS, iPhone, iPad&lt;br /&gt;
	[94] = 'AND', -- Android&lt;br /&gt;
	[186437] = 'GB',&lt;br /&gt;
	[188642] = 'GBA',&lt;br /&gt;
	[203992] = 'GBC',&lt;br /&gt;
	[184198] = 'DC',&lt;br /&gt;
	[200912] = 'SAT',&lt;br /&gt;
	[172742] = 'NES',&lt;br /&gt;
	[183259] = 'SNES',&lt;br /&gt;
	[184839] = 'N64',&lt;br /&gt;
	[182172] = 'GC', -- Sometimes has been NGC&lt;br /&gt;
	[19610114] = 'NS' -- Nintendo Switch&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- Translation table for converting system aliases to QIDs&lt;br /&gt;
local systemIDs = {&lt;br /&gt;
	['PS1'] = 10677,&lt;br /&gt;
	['PS2'] = 10680,&lt;br /&gt;
	['PS3'] = 10683,&lt;br /&gt;
	['PS4'] = 5014725,&lt;br /&gt;
	['PC'] = 16338,&lt;br /&gt;
	['WII'] = 8079,&lt;br /&gt;
	['WIIU'] = 56942,&lt;br /&gt;
	['XBOX'] = 132020,&lt;br /&gt;
	['X360'] = 48263,&lt;br /&gt;
	['XONE'] = 13361286,&lt;br /&gt;
	['3DS'] = 203597,&lt;br /&gt;
	['PSV'] = 188808,&lt;br /&gt;
	['DS'] = 170323,&lt;br /&gt;
	['NDS'] = 170323,&lt;br /&gt;
	['PSP'] = 170325,&lt;br /&gt;
	['IOS'] = 48493,&lt;br /&gt;
	['AND'] = 94,&lt;br /&gt;
	['GB'] = 186437,&lt;br /&gt;
	['GBA'] = 188642,&lt;br /&gt;
	['GBC'] = 203992,&lt;br /&gt;
	['DC'] = 184198,&lt;br /&gt;
	['SAT'] = 200912,&lt;br /&gt;
	['NES'] = 172742,&lt;br /&gt;
	['SNES'] = 183259,&lt;br /&gt;
	['N64'] = 184839,&lt;br /&gt;
	['GC'] = 182172,&lt;br /&gt;
	['NGC'] = 182172,&lt;br /&gt;
	['NS'] = 19610114&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
-- List of accepted aggregator arguments and their related QID.&lt;br /&gt;
local aggregatorAliases = {&lt;br /&gt;
    [150248] = 'MC',&lt;br /&gt;
    [40160] = 'GR',&lt;br /&gt;
    [21039459] = 'OC'&lt;br /&gt;
}   &lt;br /&gt;
&lt;br /&gt;
-- List of accepted aggregator arguments and their related QID.&lt;br /&gt;
local aggregatorIDs = {&lt;br /&gt;
    ['MC'] = 150248,&lt;br /&gt;
    ['GR'] = 40160,&lt;br /&gt;
    ['OC'] = 21039459&lt;br /&gt;
}   &lt;br /&gt;
&lt;br /&gt;
-- List of accepted reviewer arguments and their related QID.&lt;br /&gt;
local reviewerAliases = {&lt;br /&gt;
	[591573] = 'FAM',&lt;br /&gt;
	[207708] = 'IGN'&lt;br /&gt;
}   &lt;br /&gt;
&lt;br /&gt;
-- List of accepted reviewer arguments and their related QID.&lt;br /&gt;
local reviewerIDs = {&lt;br /&gt;
	['FAM'] = 591573,&lt;br /&gt;
	['IGN'] = 207708&lt;br /&gt;
} &lt;br /&gt;
&lt;br /&gt;
local function sortByPlatform(a,b) &lt;br /&gt;
	local platformA = &amp;quot;&amp;quot;;&lt;br /&gt;
	local platformB = &amp;quot;&amp;quot;;&lt;br /&gt;
	if(a['qualifiers']['P400'] ~= nil and a['qualifiers']['P400'][1] ~= nil) then&lt;br /&gt;
		platformA = p.getSystemAlias(a['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		if(platformA == nil) then&lt;br /&gt;
			platformA = mw.wikibase.label('Q'..a['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		end;&lt;br /&gt;
	end;&lt;br /&gt;
	if(b['qualifiers']['P400'] ~= nil and b['qualifiers']['P400'][1] ~= nil) then&lt;br /&gt;
		platformB = p.getSystemAlias(b['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		if(platformB == nil) then&lt;br /&gt;
			platformB = mw.wikibase.label('Q'..b['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		end;&lt;br /&gt;
	end;		&lt;br /&gt;
		&lt;br /&gt;
	return platformA &amp;lt; platformB&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
local function buildCite(reference) &lt;br /&gt;
	local referenceUrl = nil;&lt;br /&gt;
	local cite = nil;&lt;br /&gt;
	&lt;br /&gt;
	if(reference['snaks']['P854'] ~= nil and reference['snaks']['P854'][1] ~= nil) then&lt;br /&gt;
		referenceUrl = reference['snaks']['P854'][1]['datavalue']['value'];	&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	if(referenceUrl ~= nil and referenceUrl ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		cite = &amp;quot;{{cite web|url=&amp;quot;..referenceUrl;&lt;br /&gt;
			&lt;br /&gt;
		local pubdate = nil;&lt;br /&gt;
		local accessdate = nil;&lt;br /&gt;
		local publisher = nil;&lt;br /&gt;
		local work = nil;&lt;br /&gt;
		local title = nil;&lt;br /&gt;
		local archiveUrl = nil;&lt;br /&gt;
		local archiveDate = nil;&lt;br /&gt;
		local authors = {};&lt;br /&gt;
&lt;br /&gt;
		if(reference['snaks']['P577'] ~= nil and reference['snaks']['P577'][1] ~= nil) then&lt;br /&gt;
			pubdate = reference['snaks']['P577'][1]['datavalue']['value']['time'];&lt;br /&gt;
		end;&lt;br /&gt;
		if(reference['snaks']['P813'] ~= nil and reference['snaks']['P813'][1] ~= nil) then&lt;br /&gt;
			accessdate = reference['snaks']['P813'][1]['datavalue']['value']['time'];&lt;br /&gt;
		end;&lt;br /&gt;
		if(reference['snaks']['P123'] ~= nil and reference['snaks']['P123'][1] ~= nil) then&lt;br /&gt;
			publisher = mw.wikibase.label('Q'..reference['snaks']['P123'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		end;&lt;br /&gt;
		if(reference['snaks']['P1433'] ~= nil and reference['snaks']['P1433'][1] ~= nil) then&lt;br /&gt;
			work = mw.wikibase.label('Q'..reference['snaks']['P1433'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
		end;			&lt;br /&gt;
		if(reference['snaks']['P1476'] ~= nil and reference['snaks']['P1476'][1] ~= nil) then&lt;br /&gt;
			title = reference['snaks']['P1476'][1]['datavalue']['value']['text'];&lt;br /&gt;
		end;&lt;br /&gt;
		if(reference['snaks']['P1065'] ~= nil and reference['snaks']['P1065'][1] ~= nil) then&lt;br /&gt;
			archiveUrl = reference['snaks']['P1065'][1]['datavalue']['value'];&lt;br /&gt;
		end;&lt;br /&gt;
		if(reference['snaks']['P2960'] ~= nil and reference['snaks']['P2960'][1] ~= nil) then&lt;br /&gt;
			archiveDate = reference['snaks']['P2960'][1]['datavalue']['value']['time'];&lt;br /&gt;
		end;	&lt;br /&gt;
		if(reference['snaks']['P50'] ~= nil and #reference['snaks']['P50'] &amp;gt; 0) then&lt;br /&gt;
			for i,authorDat in pairs(reference['snaks']['P50']) do&lt;br /&gt;
				local authorQid = 'Q'..authorDat['datavalue']['value']['numeric-id'];&lt;br /&gt;
				if(entities[authorQid] == nil) then&lt;br /&gt;
					entities[authorQid] = mw.wikibase.getEntity(authorQid);&lt;br /&gt;
				end;&lt;br /&gt;
				&lt;br /&gt;
				local author = {};&lt;br /&gt;
				author['fullname'] = mw.wikibase.label(authorQid); -- Default to label&lt;br /&gt;
				author['first'] = nil;&lt;br /&gt;
				author['last'] = nil;&lt;br /&gt;
				&lt;br /&gt;
				if(entities[authorQid]['claims']['P735'] ~= nil and entities[authorQid]['claims']['P735'][1] ~= nil) then&lt;br /&gt;
					author['first'] = mw.wikibase.label('Q'..entities[authorQid]['claims']['P735'][1]['mainsnak']['datavalue']['value']['numeric-id']);&lt;br /&gt;
				end;&lt;br /&gt;
				if(entities[authorQid]['claims']['P734'] ~= nil and entities[authorQid]['claims']['P734'][1] ~= nil) then&lt;br /&gt;
					author['last'] = mw.wikibase.label('Q'..entities[authorQid]['claims']['P734'][1]['mainsnak']['datavalue']['value']['numeric-id']);&lt;br /&gt;
				end;&lt;br /&gt;
				&lt;br /&gt;
				table.insert(authors, author);&lt;br /&gt;
			end;&lt;br /&gt;
		end;			&lt;br /&gt;
		&lt;br /&gt;
		if(title ~= nil and title ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			cite = cite .. &amp;quot;|title=&amp;quot;..title;&lt;br /&gt;
		end;&lt;br /&gt;
		if(publisher ~= nil and publisher ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			cite = cite .. &amp;quot;|publisher=&amp;quot;..publisher;&lt;br /&gt;
		end;&lt;br /&gt;
		if(work ~= nil and work ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			cite = cite .. &amp;quot;|work=&amp;quot;..work;&lt;br /&gt;
		end;		&lt;br /&gt;
		if(pubdate ~= nil and pubdate ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			local pubdateText = Date(pubdate):text(df);&lt;br /&gt;
&lt;br /&gt;
			cite = cite .. &amp;quot;|date=&amp;quot;..pubdateText;&lt;br /&gt;
		end;		&lt;br /&gt;
		if(accessdate ~= nil and accessdate ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
			local accessdateText = Date(accessdate):text(df);&lt;br /&gt;
&lt;br /&gt;
			cite = cite .. &amp;quot;|accessdate=&amp;quot;..accessdateText;&lt;br /&gt;
		end;&lt;br /&gt;
		if(archiveUrl ~= nil and archiveUrl ~= &amp;quot;&amp;quot; and archiveDate ~= nil and archiveDate ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		    local archivedateText = Date(archiveDate):text(df);&lt;br /&gt;
			cite = cite .. &amp;quot;|archiveurl=&amp;quot;..archiveUrl;&lt;br /&gt;
			cite = cite .. &amp;quot;|archivedate=&amp;quot;..archivedateText;&lt;br /&gt;
		end;		&lt;br /&gt;
		if(#authors &amp;gt; 0) then&lt;br /&gt;
			for i,author in pairs(authors) do&lt;br /&gt;
				if(author['first'] ~= nil and author['last'] ~= nil and author['first'] ~= &amp;quot;&amp;quot; and author['last'] ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
					if(#authors == 1) then&lt;br /&gt;
						cite = cite ..&amp;quot;|last=&amp;quot;..author['last']..&amp;quot;|first=&amp;quot;..author['first'];&lt;br /&gt;
					else&lt;br /&gt;
						cite = cite ..&amp;quot;|last&amp;quot;..i..&amp;quot;=&amp;quot;..author['last']..&amp;quot;|first&amp;quot;..i..&amp;quot;=&amp;quot;..author['first'];&lt;br /&gt;
					end;&lt;br /&gt;
				else&lt;br /&gt;
					if(#authors == 1) then&lt;br /&gt;
						cite = cite ..&amp;quot;|author=&amp;quot;..author['fullname'];&lt;br /&gt;
					else&lt;br /&gt;
						cite = cite ..&amp;quot;|author&amp;quot;..i..&amp;quot;=&amp;quot;..author['fullname'];&lt;br /&gt;
					end;					&lt;br /&gt;
				end;&lt;br /&gt;
			end;			&lt;br /&gt;
		end;&lt;br /&gt;
		&lt;br /&gt;
		&lt;br /&gt;
		cite = cite..'}}';	&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	return cite;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
local function printReviewRow(frame, reviewscore)&lt;br /&gt;
	local score = nil;&lt;br /&gt;
&lt;br /&gt;
	if(reviewscore['mainsnak']['datavalue'] ~= nil and reviewscore['mainsnak']['datavalue']['value'] ~= nil) then&lt;br /&gt;
		score = reviewscore['mainsnak']['datavalue']['value'];&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;&amp;quot;;&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;&lt;br /&gt;
	local system = nil;&lt;br /&gt;
	local reference = nil;	&lt;br /&gt;
&lt;br /&gt;
	if(reviewscore['qualifiers']['P400'] ~= nil and reviewscore['qualifiers']['P400'][1] ~= nil) then&lt;br /&gt;
		system = p.getSystemAlias(reviewscore['qualifiers']['P400'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
	end	&lt;br /&gt;
	if(system ~= nil and system ~= &amp;quot;&amp;quot; and showSystem) then&lt;br /&gt;
		if(systemFormat == &amp;quot;para&amp;quot;) then&lt;br /&gt;
			ret = ret..&amp;quot;(&amp;quot;..system..&amp;quot;) &amp;quot;;&lt;br /&gt;
		else&lt;br /&gt;
			ret = ret..system..&amp;quot;: &amp;quot;;&lt;br /&gt;
		end;&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	ret = ret..score;&lt;br /&gt;
&lt;br /&gt;
	if(reviewscore['references'] ~= nil and reviewscore['references'][1] ~= nil and genRefs) then&lt;br /&gt;
		local cite = buildCite(reviewscore['references'][1]);&lt;br /&gt;
		&lt;br /&gt;
		if(cite ~= nil) then&lt;br /&gt;
			local scoreBy = p.getAggregatorAlias(reviewscore['qualifiers']['P447'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
			if(scoreBy == nil) then&lt;br /&gt;
				scoreBy = p.getReviewerAlias(reviewscore['qualifiers']['P447'][1]['datavalue']['value']['numeric-id']);&lt;br /&gt;
			end;&lt;br /&gt;
&lt;br /&gt;
			local name = entity:getLabel()..'-'..scoreBy;&lt;br /&gt;
			if(system ~= nil and system ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
				name = name..system;&lt;br /&gt;
			end;&lt;br /&gt;
&lt;br /&gt;
			cite = frame:extensionTag{ name = &amp;quot;ref&amp;quot;, args = {name=name}, content=cite };&lt;br /&gt;
			ret = ret..cite;&lt;br /&gt;
		end;&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	return ret..&amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSystemAlias(numericId)&lt;br /&gt;
	return systemAliases[numericId];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getSystemID(system)&lt;br /&gt;
	return systemIDs[system];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getAggregatorAlias(numericId)&lt;br /&gt;
	return aggregatorAliases[numericId];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getAggregatorID(system)&lt;br /&gt;
	return aggregatorIDs[system];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getReviewerAlias(numericId)&lt;br /&gt;
	return reviewerAliases[numericId];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.getReviewerID(system)&lt;br /&gt;
	return reviewerIDs[system];&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.setReviewer(iReviewer)&lt;br /&gt;
	-- No reviewer, stop. Must have reviewer at least.&lt;br /&gt;
	if(iReviewer == nil or iReviewer == &amp;quot;&amp;quot;) then&lt;br /&gt;
		return &amp;quot;Missing reviewer&amp;quot;;&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	-- See if supplied reviewer is in the aggregator table.&lt;br /&gt;
	iReviewer = string.upper(iReviewer)&lt;br /&gt;
	reviewer = p.getAggregatorID(iReviewer);&lt;br /&gt;
	if(reviewer == nil or reviewer == &amp;quot;&amp;quot;) then&lt;br /&gt;
		-- No? Maybe in the reviewer table.&lt;br /&gt;
		reviewer = p.getReviewerID(iReviewer);&lt;br /&gt;
		if(reviewer == nil or reviewer == &amp;quot;&amp;quot;) then&lt;br /&gt;
			return &amp;quot;Invalid reviewer&amp;quot;;&lt;br /&gt;
		end;&lt;br /&gt;
	end;	&lt;br /&gt;
&lt;br /&gt;
	return nil;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setDateFormat(iDf)&lt;br /&gt;
	-- Check for a date format parameter. Default to mdy if missing.&lt;br /&gt;
	if(iDf ~= nil and iDf ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		df = string.lower(iDf);&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setSystemFormat(iSf)&lt;br /&gt;
	if(iSf ~= nil and iSf ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		systemFormat = string.lower(iSf);&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setUpdateLinkStyle(iStyle)&lt;br /&gt;
	if(iStyle ~= nil and iStyle ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		updateLinkStyle = string.lower(iStyle);&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setGame(iGame)&lt;br /&gt;
	-- Check for a game parameter. If missing, default to current article.&lt;br /&gt;
	if(iGame ~= nil and iGame ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		if(entities[iGame] == nil and mw.wikibase ~= nil) then&lt;br /&gt;
 			entities[iGame] = mw.wikibase.getEntity(iGame);&lt;br /&gt;
		end;&lt;br /&gt;
		&lt;br /&gt;
		entity = entities[iGame]&lt;br /&gt;
	else&lt;br /&gt;
		-- Need to research if we can determine the entity's ID before retrieving it.&lt;br /&gt;
		if(mw.wikibase ~= nil) then&lt;br /&gt;
			entity = mw.wikibase.getEntity();&lt;br /&gt;
			if(entity ~= nil) then&lt;br /&gt;
				entities[entity['id']] = entity;&lt;br /&gt;
			end;&lt;br /&gt;
		end;&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	if(entity == nil) then&lt;br /&gt;
		return &amp;quot;No matching wikidata entity found&amp;quot;;&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	return nil;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setSystem(iSystem)&lt;br /&gt;
	-- Check for system parameter, and resolve it's QID if possible.&lt;br /&gt;
	if(iSystem ~= nil and iSystem ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		system = string.upper(iSystem);&lt;br /&gt;
		systemId = p.getSystemID(system);&lt;br /&gt;
	elseif(not showSystem) then&lt;br /&gt;
		-- If no system was specified, force showSystem on.&lt;br /&gt;
		showSystem = true;&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setGenerateReferences(iGenRefs)&lt;br /&gt;
	-- Reference suppression.&lt;br /&gt;
	if(iGenRefs ~= nil and iGenRefs ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		genRefs = yesno(iGenRefs, true);&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setShowSystem(iShowSystem)&lt;br /&gt;
	-- Suppression of system aliases in front of score, i.e. (XBOX) xx/100.&lt;br /&gt;
	if(iShowSystem ~= nil and iShowSystem ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		showSystem = yesno(iShowSystem, false);&lt;br /&gt;
	end;&lt;br /&gt;
	if(system == nil or system == '') then&lt;br /&gt;
		-- If no system was specified, force showSystem on.&lt;br /&gt;
		showSystem = true;&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.setShowUpdateLink(iShowUpdateLink)&lt;br /&gt;
	-- Suppression of update link to Wikidata at the end of the score, i.e. (XBOX) xx/100[+].&lt;br /&gt;
	if(iShowUpdateLink ~= nil and iShowUpdateLink ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		showUpdateLink = yesno(iShowUpdateLink, false);&lt;br /&gt;
	end;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.getUpdateLink()&lt;br /&gt;
	if(updateLinkStyle == &amp;quot;pen&amp;quot;) then&lt;br /&gt;
		return &amp;quot;[[File:Blue pencil.svg|frameless|text-top|10px|alt=Edit this on Wikidata|link=https://www.wikidata.org/wiki/&amp;quot;..entity['id']..&amp;quot;?uselang=&amp;quot;..mw.language.getContentLanguage().code..&amp;quot;#P444|Edit this on Wikidata]]&amp;quot;;&lt;br /&gt;
	elseif(updateLinkStyle == &amp;quot;noSub&amp;quot;) then&lt;br /&gt;
		return '[[d:'..entity['id']..'#P444|&amp;amp;#91;±&amp;amp;#93;]]';&lt;br /&gt;
	elseif(updateLinkStyle == &amp;quot;text and pen&amp;quot;) then&lt;br /&gt;
		return '&amp;lt;span style=&amp;quot;position: relative;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;position: absolute; right: 0;&amp;quot;&amp;gt;[[File:Blue pencil.svg|10px|baseline|link=|alt=]]&amp;lt;/span&amp;gt;[[d:'..entity['id']..'#P444|&amp;lt;span style=&amp;quot;position: relative; padding-right: 14px;&amp;quot;&amp;gt;Edit on Wikidata&amp;lt;/span&amp;gt;]]&amp;lt;/span&amp;gt;'&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	return '&amp;lt;sub&amp;gt;[[d:'..entity['id']..'#P444|&amp;amp;#91;±&amp;amp;#93;]]&amp;lt;/sub&amp;gt;';&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.getSitelink()&lt;br /&gt;
	return mw.wikibase.sitelink(entity['id']);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.getLabel()&lt;br /&gt;
	return mw.wikibase.label(entity['id']);&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.getParts()&lt;br /&gt;
	local ret = {};	&lt;br /&gt;
	&lt;br /&gt;
	-- Loop all of &amp;quot;has Part&amp;quot; for this title&lt;br /&gt;
	local parts = entity['claims']['P527'];	&lt;br /&gt;
	if(parts) then&lt;br /&gt;
		for i,part in pairs(parts) do&lt;br /&gt;
			table.insert(ret,&amp;quot;Q&amp;quot;..part['mainsnak']['datavalue']['value']['numeric-id']);&lt;br /&gt;
		end;		&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	return ret;	&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.getEarliestPublicationDate()&lt;br /&gt;
	local ret = {};&lt;br /&gt;
	&lt;br /&gt;
	local pubDates = entity['claims']['P577'];	&lt;br /&gt;
	if(pubDates) then&lt;br /&gt;
		for i,pubDate in pairs(pubDates) do&lt;br /&gt;
			if(pubDate['mainsnak']['datavalue']) then&lt;br /&gt;
				local timestamp = pubDate['mainsnak']['datavalue']['value']['time'];&lt;br /&gt;
				local accessdate = Date(timestamp);	&lt;br /&gt;
				table.insert(ret,accessdate);&lt;br /&gt;
			end;&lt;br /&gt;
		end;		&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	if(#ret &amp;lt; 1) then&lt;br /&gt;
		return nil;&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	table.sort(ret);&lt;br /&gt;
	&lt;br /&gt;
	return ret[1];&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
function p.printReviewScores(frame)&lt;br /&gt;
	local ret = &amp;quot;&amp;quot;;	&lt;br /&gt;
	&lt;br /&gt;
	-- Loop all of &amp;quot;review scores&amp;quot; for this title&lt;br /&gt;
	local reviewscores = entity['claims']['P444'];	&lt;br /&gt;
	if(reviewscores) then&lt;br /&gt;
		-- Find reviews that qualify for printing and insert into array.&lt;br /&gt;
		local reviewsToPrint = {}&lt;br /&gt;
    	for i,review in pairs(reviewscores) do&lt;br /&gt;
    		if(review['qualifiers'] ~= nil) then&lt;br /&gt;
				local scoreBy = nil &lt;br /&gt;
				if(review['qualifiers']['P447'] ~= nil and review['qualifiers']['P447'][1] ~= nil) then&lt;br /&gt;
					scoreBy = review['qualifiers']['P447'][1]['datavalue']['value']['numeric-id'];&lt;br /&gt;
				end;&lt;br /&gt;
				if(scoreBy == reviewer) then&lt;br /&gt;
					-- If template specified a system, we need to check for the specific system and only output that one.&lt;br /&gt;
					if(system == nil or system == &amp;quot;&amp;quot;) then&lt;br /&gt;
						-- No system specified, so output each one found.&lt;br /&gt;
						table.insert(reviewsToPrint,review);&lt;br /&gt;
					else&lt;br /&gt;
						-- Get platform if it exists.&lt;br /&gt;
						if(review['qualifiers']['P400'] ~= nil and review['qualifiers']['P400'][1] ~= nil) then&lt;br /&gt;
							-- Try to match based on QID.&lt;br /&gt;
							local reviewSysId = review['qualifiers']['P400'][1]['datavalue']['value']['numeric-id'];&lt;br /&gt;
							if(systemId == reviewSysId) then&lt;br /&gt;
								table.insert(reviewsToPrint,review);&lt;br /&gt;
							else &lt;br /&gt;
								-- If that failed, try to match based on label.&lt;br /&gt;
								local systemName = mw.wikibase.label('Q'..reviewSysId);&lt;br /&gt;
								if(systemName ~= nil and string.upper(systemName) == system) then&lt;br /&gt;
									table.insert(reviewsToPrint,review);&lt;br /&gt;
								end;&lt;br /&gt;
							end;&lt;br /&gt;
						end;&lt;br /&gt;
					end;&lt;br /&gt;
				end;&lt;br /&gt;
			end;    		&lt;br /&gt;
		end;&lt;br /&gt;
	&lt;br /&gt;
		-- Sort the array by platform label.&lt;br /&gt;
    	table.sort(reviewsToPrint, sortByPlatform);&lt;br /&gt;
    	&lt;br /&gt;
    	-- If a system was not specified, showSystem has defaulted to true. If this title only has one platform and one review, we will turn it off.&lt;br /&gt;
    	-- Note: If the title has zero or more platforms defined, we leave showSystem on. We are unable to determine if this is a single-platform game.&lt;br /&gt;
    	--if((system == nil or system == &amp;quot;&amp;quot;) and #reviewsToPrint == 1 and entity['claims']['P400'] ~= nil and #entity['claims']['P400'] == 1) then&lt;br /&gt;
    	-- Simplifying this based on discussion at [Template:Video game reviews]. If there's only one review, don't display system unless explicitly requested.&lt;br /&gt;
    	if((system == nil or system == &amp;quot;&amp;quot;) and #reviewsToPrint == 1) then&lt;br /&gt;
    		showSystem = false;&lt;br /&gt;
    	end;&lt;br /&gt;
&lt;br /&gt;
		-- Print the reviews&lt;br /&gt;
    	for i,review in ipairs(reviewsToPrint) do&lt;br /&gt;
    		ret = ret .. printReviewRow(frame, review);&lt;br /&gt;
		end;&lt;br /&gt;
	end;&lt;br /&gt;
&lt;br /&gt;
	if(ret ~= &amp;quot;&amp;quot;) then&lt;br /&gt;
		ret = string.sub(ret, 1, -7);&lt;br /&gt;
	elseif(not showUpdateLink) then&lt;br /&gt;
		ret = nil;&lt;br /&gt;
	end;&lt;br /&gt;
	&lt;br /&gt;
	-- Add edit link at end if showUpdateLink is on.&lt;br /&gt;
	if(showUpdateLink) then &lt;br /&gt;
		ret = ret .. p.getUpdateLink();&lt;br /&gt;
	end;	&lt;br /&gt;
&lt;br /&gt;
	return ret;&lt;br /&gt;
end;&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Zoran</name></author>
	</entry>
</feed>