fix mcstatus properly
This commit is contained in:
		
							parent
							
								
									e5d55ba0ad
								
							
						
					
					
						commit
						6faf2022e8
					
				@ -198,44 +198,58 @@ in
 | 
			
		||||
            from mcstatus import JavaServer
 | 
			
		||||
            import signal
 | 
			
		||||
            from time import sleep
 | 
			
		||||
            
 | 
			
		||||
            
 | 
			
		||||
            def see_players():
 | 
			
		||||
            import notify2
 | 
			
		||||
 | 
			
		||||
            pvv = JavaServer.lookup("minecraft.pvv.ntnu.no")
 | 
			
		||||
            dods = JavaServer.lookup("mc.dodsorf.as")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            def getPlayers(server):
 | 
			
		||||
                status = server.status()
 | 
			
		||||
                players = getattr(getattr(status, "players"), "sample", [])
 | 
			
		||||
                return players or []
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            def build_players(list, server):
 | 
			
		||||
                result = ""
 | 
			
		||||
                if pvv_status is not None:
 | 
			
		||||
                    result += "PVV: "
 | 
			
		||||
                    for player in pvv_status.players.sample:
 | 
			
		||||
                        result += player.name + " "
 | 
			
		||||
                        result += "\n"
 | 
			
		||||
                if dods_status is not None:
 | 
			
		||||
                    result += "DODS: "
 | 
			
		||||
                    for player in dods_status.players.sample:
 | 
			
		||||
                        result += player.name + " "
 | 
			
		||||
                        result += "\n"
 | 
			
		||||
                if len(list) > 0:
 | 
			
		||||
                    result += server + ": "
 | 
			
		||||
                    for player in list:
 | 
			
		||||
                        result += player.name + " \n"
 | 
			
		||||
                return result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            signal.signal(signal.SIGUSR1, see_players)
 | 
			
		||||
            def display_players(pvv, dods):
 | 
			
		||||
                result = build_players(getPlayers(pvv), "PVV")
 | 
			
		||||
                result += build_players(getPlayers(dods), "DODS")
 | 
			
		||||
                return result
 | 
			
		||||
 | 
			
		||||
            while True:
 | 
			
		||||
                result = ""
 | 
			
		||||
                try:
 | 
			
		||||
                    pvv = JavaServer.lookup("minecraft.pvv.ntnu.no")
 | 
			
		||||
                    pvv_status = pvv.status()
 | 
			
		||||
                    if pvv_status.players.online > 0:
 | 
			
		||||
                        result += ("P" + str(pvv_status.players.online))
 | 
			
		||||
                except:
 | 
			
		||||
                    pass
 | 
			
		||||
 | 
			
		||||
                try:
 | 
			
		||||
                    dods = JavaServer.lookup("mc.dodsorf.as")
 | 
			
		||||
                    dods_status = dods.status()
 | 
			
		||||
                    if dods_status.players.online > 0:
 | 
			
		||||
                        result += ("D" + str(dods_status.players.online))
 | 
			
		||||
                except:
 | 
			
		||||
                    pass
 | 
			
		||||
            def peek(*_):
 | 
			
		||||
                result = display_players(pvv, dods)
 | 
			
		||||
                notify2.init('Minecraft Server Status')
 | 
			
		||||
                n = notify2.Notification("Minecraft Server Status", result)
 | 
			
		||||
                n.show()
 | 
			
		||||
                main()
 | 
			
		||||
 | 
			
		||||
                print(result)
 | 
			
		||||
                sleep(5)
 | 
			
		||||
 | 
			
		||||
            signal.signal(signal.SIGUSR1, peek)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            def main():
 | 
			
		||||
                while True:
 | 
			
		||||
                    result = ""
 | 
			
		||||
                    pvvs = getPlayers(pvv)
 | 
			
		||||
                    dodss = getPlayers(dods)
 | 
			
		||||
                    if len(pvvs) > 0:
 | 
			
		||||
                        result += "P" + str(len(pvvs))
 | 
			
		||||
                    if len(dodss) > 0:
 | 
			
		||||
                        result += "D" + str(len(dodss))
 | 
			
		||||
                    print(result, flush=True)
 | 
			
		||||
                    sleep(5)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            main()
 | 
			
		||||
          '';
 | 
			
		||||
          click-left = "kill -USR1 %pid%";
 | 
			
		||||
          # interval =
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user