Module:ProfileInfoboxUpdater
Documentation for this module may be created at Module:ProfileInfoboxUpdater/doc
--local rank = {} --externalData = mw.ext.externalData --local uuid = {} local p = {} local capiunto = require 'capiunto' --[ Thecow275's Profile Infobox Updater Module V1 ] local function preprocessArg(s) if not s then return nil end s = s:match('^%s*(.-)%s*$') --trim whitespace if s == '' then return nil else return s end end -- HIGHLY EXPERIMENTAL STUFF --local function createHTMLTable(data) -- local html = '<table>' -- for key, value in pairs(data) do -- html = html .. '<tr><td>' .. key .. '</td><td>' .. tostring(value) .. '</td></tr>' -- end -- html = html .. '</table>' -- return html --end -- EXPERIMANTAL STUFF ENDS function p.main(frame) local args = frame.args local username = preprocessArg(args[1]) local datatype = preprocessArg(args[2]) -- currently unused will be used whenever I implement more datatypes if not username then -- check for blank username return 'USERNAME NOT VALID OR API ERROR' end if username == '' then return 'NO USERNAME INPUT' end if username == '{{{username}}}' then return 'TEMPLATE NOTICED' end if username == '{{{1}}}' then return 'thecow275' end if username then local data = mw.ext.externalData.getExternalData({ url = "https://api.ashcon.app/mojang/v2/user/" .. username, format = 'json' }) --local uuid = data.uuid if not data.uuid then --check for blank uuid (if this happens hell has broken lose) return 'NO VALID UUID FOUND' end if data.uuid then --if uuid is valid then get data from johnymuffin jstats api local userdata = mw.ext.externalData.getExternalData({ url = "https://statistics.johnymuffin.com/api/v1/getUser?serverID=0&uuid=" .. data.uuid, data = {deaths='playerDeaths',pkilled='playersKilled',joins='joinCount',traveled='metersTraveled',blocksplaced='blocksPlaced',itemsdropped='itemsDropped',trustlevel='trustLevel',blocksdestroyed='blocksDestroyed',groups = 'Groups', creatureskilled = 'creaturesKilled', balance='money'}, format = 'json' }) if userdata then -- if this doesn't trigger something has gone terribly wrong local trust = userdata.trustlevel -- Trust Level local blocksbroken = userdata.blocksdestroyed -- Blocks Broken local traveled = userdata.traveled -- Meters Traveled local blocksplaced = userdata.blocksplaced -- Blocks Placed local itemsdropped = userdata.itemsdropped -- Items Dropped local groups = userdata.groups -- Groups as in Ranks local deaths = userdata.deaths -- Player Deaths local pkilled = userdata.pkilled -- Players Killed local mkilled = userdata.creatureskilled -- Mob Kills local balance = userdata.balance -- Player's Money local joins = userdata.joins -- Join count if datatype == 'infobox' then --local idk = trust.."|"..pkilled.."|"..mkilled.."|"..deaths.."|"..traveled.."|"..blocksplaced.."|"..itemsdropped.."|"..blocksbroken --return createHTMLTable(data) local args = frame:getParent().args -- local headerStyle -- headerStyle = 'background-color:red' -- local labelStyle -- labelStyle = 'background-color:#55FF55' -- local dataStyle -- dataStyle = 'background-color:#55FF55; font-weight:bold; display:inline-block; float:right' -- local labelStyle2 -- labelStyle2 = 'style="background-color:#444444"' -- local dataStyle2 -- dataStyle2 = 'style="background-color:#222222; font-weight:bold; display:inline-block; float:left"' local retval = capiunto.create({ --title = username, --titleStyle = --headerStyle = headerStyle, -- labelStyle = labelStyle, --dataStyle = dataStyle, -- labelStyle2 = labelStyle2, --dataStyle2 = dataStyle2, }) --:addImage( args.image, args.caption ) :addHeader(username, 'icr-title') :addRow('','') --:addWikitext('File:https://minotar.net/armor/bust'..username..'.png') :addRow( 'Username', username, 'icr-data-6', 'icr-label-a' ) :addImage('https://minotar.net/armor/bust/'..username..'.png','Player Bust','icr-hack') :addRow( 'UUID', data.uuid ) :addRow( 'Balance', balance) :addHeader( 'Miscellaneous Stats', 'icr-header' ) :addRow( 'Join Count', joins ) :addRow( 'Trust Level', trust, '', 'infobox-td') :addRow( 'Player Kills', pkilled, 'icr-right-align', 'icr-right-align' ) :addRow( 'Mob Kills', mkilled ) :addRow( 'Deaths', deaths ) :addRow( 'Blocks Traveled', traveled ) :addRow( 'Blocks Placed', blocksplaced ) :addRow( 'Items Dropped', itemsdropped ) :addRow( 'Blocks Broken', blocksbroken ) return retval end -- if datatype == 'uuid' then -- return uuid -- end -- if datatype == 'joins' then -- return joins -- end -- if datatype == 'balance' then -- return balance -- end -- if datatype == 'mkilled' then -- return mkilled -- end -- if datatype == 'pkilled' then -- return pkilled -- end -- if datatype == 'deaths' then -- return deaths -- end -- if datatype == 'itemsdropped' then -- return itemsdropped -- end -- if datatype == 'blocksplaced' then -- return blocksplaced -- end -- if datatype == 'traveled' then -- return traveled -- end -- if datatype == 'trust' then -- return trust -- end -- if datatype == 'broken' then -- return blocksbroken -- end if datatype == 'rank' then if groups then -- RANKLIST START -- if string.find(groups, "admin") then --ADMIN return 'Admin' end if string.find(groups, "trial") then -- Trial Helper return 'Trial Helper' end if string.find(groups, "moderator") then -- Moderator return 'Moderator' end if string.find(groups, "helper") then -- Helper return 'Helper' end if string.find(groups, "developer") then -- Developer return 'Developer' end if string.find(groups, "diamondcitizen") then -- Diamond Citizen return 'Diamond Citizen' end if string.find(groups, "citizen") then -- Citizen return 'Citizen' end if string.find(groups, "trusted") then -- Gold Citizen return 'Gold Citizen' end if string.find(groups, "hero") then -- Hero return 'Hero' end if string.find(groups, "legend") then -- Legend return 'Legend' end if string.find(groups, "mystic") then -- Mystic return 'Mystic' end if string.find(groups, "donator") then -- Donator return 'Donator' end if string.find(groups, "donatorplus") then -- Donator+ return 'Donator+' end if string.find(groups, "donatorplusplus") then -- Donator++ return 'Donator++' end if string.find(groups, "trooper") then -- Trooper return 'Trooper' end if string.find(groups, "infrastructure") then -- Infrastructure (not used) return 'Infrastructure' end -- RANKLIST END -- else return 'NO USERDATA OF SPECIFIED TYPE FOUND' end end end end else return 'something went horribly wrong' end end return p