# Interrogate wow armory import urllib2 import xml.dom.minidom import sys import time #Imports realm information from config.wtf def getRealm(): f = open("../../../wtf/Config.wtf") for line in f: if "realmName" in line: realm = line.split()[2] realm = realm.replace('"','') return realm return "fail" def getCharacterSheet(character,realm): strUrl = "http://www.wowarmory.com/character-sheet.xml?r=%s&n=%s" % (realm.replace( ' ', '+'), character) #print "strUrl: " + strUrl # # Open url. # Need to specify firefox as user agent as this makes the server return an XML file. # If this is not done we get html. # oOpener = urllib2.build_opener() oOpener.addheaders = [ ('user-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'), ] req = urllib2.Request(strUrl) strFile = oOpener.open(req).read() #print strFile if strFile != "": oDoc = xml.dom.minidom.parseString(strFile); return oDoc else: return "fail" def getGuildName(oDoc): element = 'character'; attribute = 'guildName'; obj = getAttributes(oDoc,element,attribute); return obj["guildName"] def getProfessions(character, realm): oDoc = getCharacterSheet(character,realm) if oDoc != "fail": element = 'skill'; attribute = ''; return getAttributes(oDoc,element,attribute); else: obj = {"professions":"No Information"} return obj def getGuildList(oDoc,realm, guild): print guild members = []; strUrl = "http://www.wowarmory.com/guild-info.xml?r=%s&n=%s" % (realm.replace( ' ', '+'), guild.replace( ' ', '+')) print "guildURL: " + strUrl # # Open url. # Need to specify firefox as user agent as this makes the server return an XML file. # If this is not done we get html. # oOpener = urllib2.build_opener() oOpener.addheaders = [ ('user-agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.0; en-GB; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4'), ] req = urllib2.Request( strUrl) strFile = oOpener.open(req).read() #print strFile oDoc = xml.dom.minidom.parseString(strFile) Elements = oDoc.getElementsByTagName("character") for i in range(0,len(Elements)): members.append(Elements[i].getAttribute("name")) return members; def getAttributes(oDoc, element, attribute): if oDoc == "": print "oDoc is null"; strValue = ""; if element == "skill": attribute = "professions"; try: Elements = oDoc.getElementsByTagName("skill"); except: print "could not get information for this character" if (len(Elements) > 0): for i in range(0,len(Elements)): if (i > 0): strValue += "|" strValue += "%s:%s" % (Elements[i].getAttribute("name"), Elements[i].getAttribute("value")) #print strValue else: strValue = "No Information" else: Elements = oDoc.getElementsByTagName(element) if len(Elements) > 0: oElement = oDoc.getElementsByTagName(element)[0] strValue = oElement.getAttribute(attribute) obj = {attribute : strValue} return obj Realm = getRealm() print Realm if Realm != "fail": p = open("info.txt","w"); f = open("FaraFrames.lua","w"); f.write("function getD()\nreturn{") d = {}; Character = "Knikon" oDoc = getCharacterSheet(Character,Realm) myGuild = getGuildName(oDoc) guildList = getGuildList(oDoc,Realm,myGuild); guildList.sort() for i in range(0,len(guildList)): print "%s/%s Guildmates" % ((i+1),len(guildList)) d[guildList[i]] = getProfessions(guildList[i],Realm) time.sleep(1) guildLen = len(guildList) currentLine = 0; for key in d.keys(): currentLine+=1 if d[key].has_key("professions"): if d[key]["professions"] != "No Information": print "%s : %s" % (key,d[key]["professions"]) skillString = d[key]["professions"] skillSets = skillString.split('|') firstSet = skillSets[0]; secondSet = skillSets[1]; firstSet = firstSet.split(':') secondSet = secondSet.split(':') firstSkill = firstSet[0]; firstValue = firstSet[1]; secondSkill = secondSet[0]; secondValue = secondSet[1]; f.write('["%s"] = { %s = %s, %s = %s }' % (key,firstSkill,firstValue,secondSkill,secondValue)) if (currentLine < guildLen): f.write(",") p.write("%s~%s\n" % (key,d[key]["professions"])) else: print "%s does not have the key" f.write('}\nend\n') c = open("base.lua"); for line in c: f.write(line) f.close() else: print "Realm Information Not Found"