Module:ProfileInfoboxUpdater: Difference between revisions

From RetroMC
Jump to navigation Jump to search
(Updating Core Functionality from returning concat data to just the raw data)
No edit summary
 
(92 intermediate revisions by the same user not shown)
Line 1: Line 1:
--local rank = {}
--externalData = mw.ext.externalData
--local uuid = {}
local p  =  {}
local p  =  {}
 
local capiunto = require 'capiunto'




Line 42: Line 39:


     if username == '{{{1}}}' then
     if username == '{{{1}}}' then
         return 'thecow275'
         username = 'thecow275'
     end
     end


Line 50: Line 47:
         format = 'json'
         format = 'json'
     })
     })
    local uuid = data.uuid
   




     if not uuid then --check for blank uuid (if this happens hell has broken lose)
     if not data.uuid then --check for blank uuid (if this happens hell has broken lose)
         return 'NO VALID UUID FOUND'
         return 'NO VALID UUID FOUND'
     end
     end
      
      


     if uuid then
     if data.uuid then --if uuid is valid then get data from johnymuffin jstats api
         local userdata = mw.ext.externalData.getExternalData({
         local userdata = mw.ext.externalData.getExternalData({
             url = "https://statistics.johnymuffin.com/api/v1/getUser?serverID=0&uuid=" .. data.uuid,
             url = "https://statistics.johnymuffin.com/api/v1/getUser?serverID=0&uuid=" .. data.uuid,
Line 68: Line 65:
                
                
                  
                  
                local trust = userdata.trustlevel  -- Trust Level
             
                 local blocksbroken = userdata.blocksdestroyed -- Blocks Broken
                 local rank = 'Wanderer'
                 local traveled = userdata.traveled -- Meters Traveled
                 local bracketstyle = 'icr-t-8 icr-data'
                local blocksplaced = userdata.blocksplaced -- Blocks Placed
                 local rankstyle = 'icr-t-7 icr-data'
                 local itemsdropped = userdata.itemsdropped -- Items Dropped
                 local plusstyle = 'icr-t-4 icr-data'
                local groups = userdata.groups  -- Groups as in Ranks
                 local plus = ''
                 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 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


                if datatype == 'infobox' then
              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 idk = trust.."|"..pkilled.."|"..mkilled.."|"..deaths.."|"..traveled.."|"..blocksplaced.."|"..itemsdropped.."|"..blocksbroken
             
                    return data
              local styletop = 'background:#cfc;'
                end


                if datatype == 'uuid' then
              if username == 'JohnyMuffin' then
                    return uuid
                styletop = 'background:#5555FF; color:#FFFFFF;'
                 end
              else
                 styletop = 'background:#cfc;'
              end


                if datatype == 'joins' then
                    return joins
                end


                 if datatype == 'balance' then
                 if datatype == 'infobox' then
                     return balance
                      
                end
                   
                        local args = frame:getParent().args
                     
                        local retval = capiunto.create({
                         
                            top = username,
                           
                            topStyle = styletop
                           
                        })
                       
                       
                     
                        --:addImage( args.image, args.caption )
                        retval:addImage('https://minotar.net/armor/bust/'..username..'.png','Player Bust','icr-hack')
                        --:addHeader(username, 'icr-title')
                        retval:addRow('','')
                       
                        --:addWikitext('File:https://minotar.net/armor/bust'..username..'.png')
                        retval:addRow( 'Username', username, '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', data.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')
                       
                    return retval
                       
                       
                       


                if datatype == 'mkilled' then
                    return mkilled
                end


                if datatype == 'pkilled' then
                end
                    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
        
        

Latest revision as of 17:19, 15 October 2024

Documentation for this module may be created at Module:ProfileInfoboxUpdater/doc

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



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
        username = 'thecow275'
    end

    if username then
    local data = mw.ext.externalData.getExternalData({
        url = "https://api.ashcon.app/mojang/v2/user/" .. username,
        format = 'json'
    })
    


     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 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 username == 'JohnyMuffin' then
                styletop = 'background:#5555FF; color:#FFFFFF;'
              else
                styletop = 'background:#cfc;'
              end


                if datatype == 'infobox' then
                    
                    
                        local args = frame:getParent().args
                      
                        local retval = capiunto.create({
                           
                            top = username,
                            
                            topStyle = styletop
                            
                        })
                        
                        
                       
                        --:addImage( args.image, args.caption )
                        retval:addImage('https://minotar.net/armor/bust/'..username..'.png','Player Bust','icr-hack')
                        --:addHeader(username, 'icr-title')
                        retval:addRow('','')
                        
                        --:addWikitext('File:https://minotar.net/armor/bust'..username..'.png')
                        retval:addRow( 'Username', username, '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', data.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')
                        
	                    return retval
                        
                        
                        


                 end

               
     end
      
    end
else 
    return 'something went horribly wrong'
 end

end

return p