Module:ProfileInfoboxUpdater: Difference between revisions

From RetroMC
Jump to navigation Jump to search
No edit summary
Tag: Reverted
No edit summary
 
(91 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 json = require('mw.json')
local capiunto = require 'capiunto'
 




Line 43: Line 39:


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


Line 51: 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 69: 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
                if userdata.groups then
                local balance = userdata.balance -- Player's Money
                    if string.find(userdata.groups, "wanderer") then
                local joins = userdata.joins -- Join count
                    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
                 if datatype == 'infobox' then
                     --local idk = trust.."|"..pkilled.."|"..mkilled.."|"..deaths.."|"..traveled.."|"..blocksplaced.."|"..itemsdropped.."|"..blocksbroken
                      
                    local testing = mw.ext.externalData.getExternalData({
                   
                        url = "https://statistics.johnymuffin.com/api/v1/getUser?serverID=0&uuid=" .. data.uuid,
                        local args = frame:getParent().args
                     
                        local retval = capiunto.create({
                         
                            top = username,
                           
                            topStyle = styletop
                           
                        })
                          
                          
                    format = 'json'
                       
                    })
                     
                    if testing then
                        --:addImage( args.image, args.caption )
                         local datadecoded = json.decode(response.body)
                        retval:addImage('https://minotar.net/armor/bust/'..username..'.png','Player Bust','icr-hack')
                         if datadecoded and decoded.success then
                        --:addHeader(username, 'icr-title')
                             return datadecoded
                        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
                         else
                            return "uh oh"
                        retval:addRow( 'Rank', formattedrank, 'icr-7 icr-data', 'icr-7' )
                         end
                         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


                   
                   
                   
                    return data
                 end
                 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
        
        

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