"""
bf2xml.py
Ricky Hewitt <kahrny@gmail.com>
Part of the xbot irc bot.
This script is able to display BF2 server information by
obtaining and parsing an XML file.
Relies on game-monitor.com (for now).
TODO: Add Current Map (limited due to limitations of XML feed)
"""
import urllib
from xml.dom import minidom
def get_server_info(HOST="74.53.113.68:16567"):
"""Retrieve information for a given IP address (e.g. 127.0.0.1:16567).
Output is in the form of a list."""
HOST_URL = 'http://module.game-monitor.com/%s/data/server.xml' % (HOST)
dom = minidom.parse(urllib.urlopen(HOST_URL))
for node in dom.getElementsByTagName('ip'):
server_ip = node.firstChild.data
for node in dom.getElementsByTagName('port'):
server_port = node.firstChild.data
for node in dom.getElementsByTagName('name'):
server_name = node.firstChild.data
for node in dom.getElementsByTagName('query_time'):
server_ping = node.firstChild.data
for node in dom.getElementsByTagName('player'):
server_players = node.firstChild.data
for node in dom.getElementsByTagName('maxplayer'):
server_mplayers = node.firstChild.data
for node in dom.getElementsByTagName('link'):
server_link = node.firstChild.data
server_info = []
server_info.append(str(server_ip) + ":" + str(server_port) + " : " + str(server_name) + " : " + str(server_players) + "/" + str(server_mplayers) + " : " + str(server_ping))
#server_info.append(str(server_link))
return server_info
if __name__=="__main__":
serverinfo = get_server_info()
for i in serverinfo:
print i