Module:WikiStats2: Difference between revisions
Jump to navigation
Jump to search
(Created page with "local p = {} local capiunto = require 'capiunto' --[ Thecow275's Profile Infobox Updater Module V2 ] --[ Nicknamed: UUID and J-Village Update] 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 function p.main(frame) local args = frame.args local input = preprocessArg(args[1]) local datatype = preprocessArg(args[2]) -- currently u...") |
No edit summary |
||
| Line 239: | Line 239: | ||
local retval = capiunto.create({ | local retval = capiunto.create({ | ||
bodyStyle = | bodyStyle = icr-bodystyle, | ||
top = input, | top = input, | ||
Revision as of 05:13, 6 December 2024
Documentation for this module may be created at Module:WikiStats2/doc
local p = {}
local capiunto = require 'capiunto'
--[ Thecow275's Profile Infobox Updater Module V2 ]
--[ Nicknamed: UUID and J-Village Update]
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
function p.main(frame)
local args = frame.args
local input = preprocessArg(args[1])
local datatype = preprocessArg(args[2]) -- currently unused will be used whenever I implement more datatypes
local UUIDORUSER = preprocessArg(args[3]) -- Selector for if input is username OR UUID
local PlayerORVillage = preprocessArg(args[4]) -- Jesus christ argument just so you can specify if you are searching for village data YES village data
-- this module will get bloated with the jvillage stuff but EHHH
if not input then -- check for blank username
return 'USERNAME OR UUID NOT VALID OR YOU SPECIFIED UUID WITH THE WRONG TEMPLATE'
end
if input == '' then
return 'NO USERNAME OR UUID INPUT'
end
if input == '{{{username}}}' then
return 'TEMPLATE NOTICED'
end
if input == '{{{1}}}' then
input = 'thecow275'
end
local uuid = '8fa8f70d-eb7d-4743-b0ad-837cdfb69f4e'
if input then
if UUIDORUSER == '' or '{{{2}}}' then
local data = mw.ext.externalData.getExternalData({
url = "https://api.ashcon.app/mojang/v2/user/" .. input,
format = 'json'
})
uuid = data.uuid
end
if UUIDORUSER == 'UUID' then
local data2 = mw.ext.externalData.getExternalData({
url = 'https://api.ashcon.app/mojang/v2/user/' .. input,
format = 'json'
})
input = data2.username
uuid = input
end
if not uuid then --check for blank uuid (if this happens hell has broken lose)
return 'NO VALID UUID FOUND'
end
if 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=" .. 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 rank = 'Wanderer'
local bracketstyle = 'icr-t-8 icr-data'
local rankstyle = 'icr-t-7 icr-data'
local plusstyle = 'icr-t-4 icr-data'
local plus = ''
if userdata.groups then
if string.find(userdata.groups, "wanderer") then
rank = 'Wanderer'
bracketstyle = 'icr-t-8 icr-data'
rankstyle = 'icr-t-7 icr-data'
end -- RANKLIST START --
if string.find(userdata.groups, "admin") then --ADMIN
rank = 'Admin'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-4 icr-data'
end
if string.find(userdata.groups, "trial") then -- Trial Helper
rank = 'Trial Helper'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-a icr-data'
end
if string.find(userdata.groups, "moderator") then -- Moderator
rank = 'Moderator'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-6 icr-data'
end
if string.find(userdata.groups, "helper") then -- Helper
rank = 'Helper'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-3 icr-data'
end
if string.find(userdata.groups, "developer") then -- Developer
rank = 'Developer'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-c icr-data'
end
if string.find(userdata.groups, "diamondcitizen") then -- Diamond Citizen
rank = 'Diamond Citizen'
bracketstyle = 'icr-t-b icr-data'
rankstyle = 'icr-t-a icr-data'
end
if string.find(userdata.groups, "citizen") then -- Citizen
rank = 'Citizen'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-a icr-data'
end
if string.find(userdata.groups, "trusted") then -- Gold Citizen
rank = 'Gold Citizen'
bracketstyle = 'icr-t-6 icr-data'
rankstyle = 'icr-t-a icr-data'
end
if string.find(userdata.groups, "hero") then -- Hero
rank = 'Hero'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-2 icr-data'
end
if string.find(userdata.groups, "legend") then -- Legend
rank = 'Legend'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-9 icr-data'
end
if string.find(userdata.groups, "mystic") then -- Mystic
rank = 'Mystic'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-b icr-data'
end
if string.find(userdata.groups, "donator") then -- Donator
rank = 'Donator'
bracketstyle = 'icr-t-8 icr-data'
rankstyle = 'icr-t-c icr-data'
end
if string.find(userdata.groups, "donatorplus") then -- Donator+
rank = 'Donator'
bracketstyle = 'icr-t-8 icr-data'
rankstyle = 'icr-t-c icr-data'
plus = '+'
end
if string.find(userdata.groups, "donatorplusplus") then -- Donator++
rank = 'Donator'
bracketstyle = 'icr-t-8 icr-data'
rankstyle = 'icr-t-c icr-data'
plus = '++'
end
if string.find(userdata.groups, "trooper") then -- Trooper
rank = 'Trooper'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-d icr-data'
end
if string.find(userdata.groups, "infrastructure") then -- Infrastructure (not used)
rank = 'Infrastructure'
bracketstyle = 'icr-t-f icr-data'
rankstyle = 'icr-t-6 icr-data'
end
-- RANKLIST END --
else
rank = 'Wanderer'
bracketstyle = 'icr-t-8 icr-data'
rankstyle = 'irc-t-7 icr-data'
end
local formattedrank = string.format('<span class="%s">[</span><span class="%s">%s</span><span class="%s">%s</span><span class="%s">]</span>', bracketstyle,rankstyle,rank,plusstyle,plus,bracketstyle)
local styletop = 'background:#cfc;'
if input == 'JohnyMuffin' then
styletop = 'background:#5555FF; color:#FFFFFF;'
else
styletop = 'background:#cfc;'
end
if datatype == 'PlayerInfobox' then
local villagedata = mw.ext.externalData.getExternalData({
url = "api.retromc.org/api/v1/village/getVillageList",
format = 'json'
})
local playerVillages = mw.ext.externalData.getExternalData({
url = "https://statistics.retromc.org/api/user_villages?uuid=" .. uuid,
data = {data2='data',member='data:member',assistant='data:assistant'},
format = 'json'
})
mw.logObject(playerVillages)
mw.log(playerVillages)
print(playerVillages)
--error(table.concat(playerVillages, ','))
local villagels = {}
if playerVillages.data.data2.owner then
for _, ownerData in pairs(playerVillages.data.data2.owner) do --maybe this needs to be for pairs in data and then again for ipairs in owner, member and assistant ? so maybe I need to create 2 tables for this and then handle it through that ?
if ownerData.village then -- the data seems to be of Object - > Object -> Array -> Object. So I need to deal with that I guess
table.insert(villagels, ownerData.village)
end
end
end
local args = frame:getParent().args
local retval = capiunto.create({
bodyStyle = icr-bodystyle,
top = input,
topStyle = styletop
})
--:addImage( args.image, args.caption )
retval:addImage('https://minotar.net/armor/bust/'..input..'.png','Player Bust','icr-hack')
--:addHeader(username, 'icr-title')
retval:addRow('','')
--:addWikitext('File:https://minotar.net/armor/bust'..username..'.png')
retval:addRow( 'Username', input, 'icr-f', 'icr-f icr-data' )
if rank == 'Wanderer' then
retval:addRow('Rank', formattedrank, 'icr-wanderer icr-data', 'icr-wanderer')
else
retval:addRow( 'Rank', formattedrank, 'icr-7 icr-data', 'icr-7' )
end
retval:addRow( 'UUID', uuid, 'icr-data' )
retval:addRow( 'Balance', string.format("%.2f", userdata.balance),'icr-data icr-7', 'icr-7')
retval:addHeader( 'Miscellaneous Stats', 'icr-header' )
retval:addRow( 'Join Count', userdata.joins, 'icr-data' )
retval:addRow( 'Trust Level', userdata.trustlevel, 'icr-data icr-7', 'icr-7')
retval:addRow( 'Player Kills', userdata.pkilled, 'icr-data' )
retval:addRow( 'Mob Kills', userdata.creatureskilled, 'icr-data icr-7', 'icr-7' )
retval:addRow( 'Deaths', userdata.deaths, 'icr-data' )
retval:addRow( 'Blocks Traveled', userdata.traveled, 'icr-data icr-7', 'icr-7' )
retval:addRow( 'Blocks Placed', userdata.blocksplaced, 'icr-data' )
retval:addRow( 'Items Dropped', userdata.itemsdropped, 'icr-data icr-7', 'icr-7' )
retval:addRow( 'Blocks Broken', userdata.blocksdestroyed, 'icr-data')
if villagels == nil then
retval:addRow( 'Villages', 'ERROR', 'icr-data')
else
local villageconcat = table.concat(villagels, ', ')
retval:addRow('Villages', villageconcat)
end
return retval
end
end
end
else
return 'something went horribly wrong'
end
end
return p