Module:ProfileInfoboxUpdater: Difference between revisions

From RetroMC
Jump to navigation Jump to search
(hacky but if this works oh lord save us Scout)
No edit summary
 
(65 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'
local capiunto = require 'capiunto'
Line 21: Line 18:
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)
function p.main(frame)
Line 51: Line 39:


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


Line 59: 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 77: 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
                      
                      
                    --return createHTMLTable(data)
                      
                      
                         local args = frame:getParent().args
                         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 = 'background-color:#444444'
                        local datastyle2
                            datastyle2 = 'background-color:#222222; font-weight:bold; display:inline-block; float:right'
                       
                         local retval = capiunto.create({
                         local retval = capiunto.create({
                             title = args.title,
                         
                             headerStyle = headerStyle,
                             top = username,
                             labelStyle = labelStyle,
                              
                             dataStyle = dataStyle,
                             topStyle = styletop
                              
                         })
                         })
 
                       
                       
                        
                        
                         --:addImage( args.image, args.caption )
                         --:addImage( args.image, args.caption )
                         :addRow( 'Username', username )
                         retval:addImage('https://minotar.net/armor/bust/'..username..'.png','Player Bust','icr-hack')
                         local retval2 capiunto.create({
                        --:addHeader(username, 'icr-title')
                            title = args.title,
                         retval:addRow('','')
                            headerStyle = headerStyle,
                       
                             labelStyle = labelStyle2,
                        --:addWikitext('File:https://minotar.net/armor/bust'..username..'.png')
                            dataStyle = datastyle2,
                        retval:addRow( 'Username', username, 'icr-f', 'icr-f icr-data' )
                         })
                        if rank == 'Wanderer' then
                         :addRow( 'UUID', uuid )
                             retval:addRow('Rank', formattedrank, 'icr-wanderer icr-data', 'icr-wanderer')
                         :addRow( 'Join Count', joins )
                        else
                         :addHeader( 'Miscellaneous Stats' )
                        retval:addRow( 'Rank', formattedrank, 'icr-7 icr-data', 'icr-7' )
                    :addRow( 'Trust Level', trust, '', 'infobox-td')
                         end
                    :addRow( 'Player Kills', pkilled )
                         retval:addRow( 'UUID', data.uuid, 'icr-data' )
                         :addRow( 'Mob Kills', mkilled )
                         retval:addRow( 'Balance', string.format("%.2f", userdata.balance),'icr-data icr-7', 'icr-7')
                         :addRow( 'Deaths', deaths )
                         retval:addHeader( 'Miscellaneous Stats', 'icr-header' )
                         :addRow( 'Blocks Traveled', traveled )
                        retval:addRow( 'Join Count', userdata.joins, 'icr-data' )
                         :addRow( 'Blocks Placed', blocksplaced )
                    retval:addRow( 'Trust Level', userdata.trustlevel, 'icr-data icr-7', 'icr-7')
                         :addRow( 'Items Dropped', itemsdropped )
                    retval:addRow( 'Player Kills', userdata.pkilled, 'icr-data' )
                         :addRow( 'Blocks Broken', blocksbroken )
                         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, retval2
                    return retval
                          
                          
                          
                          
Line 143: Line 228:
                 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