Advertisement
Guest User

Parser

a guest
Apr 27th, 2014
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.87 KB | None | 0 0
  1. import os, re
  2. from urllib import request
  3.  
  4. def writeSQLQuery(file, entry, copper, silver, gold) :
  5.     money = gold * 10000 + silver * 100 + copper
  6.     minMoney = 0
  7.     maxMoney = 0
  8.     if (gold != 0 and silver != 0 and copper != 0) :
  9.         minMoney = money - 50000
  10.         maxMoney = money + 50000
  11.     elif (gold != 0 and silver == 0 and copper == 0) or (gold == 0 and silver != 0) :
  12.         minMoney = money - 500
  13.         maxMoney = money + 500
  14.     elif (gold == 0 and silver == 0) :
  15.         minMoney = money - 5
  16.         maxMoney = money + 5
  17.          
  18.     sqlQuery = "UPDATE creature_template SET mingold = " + str(minMoney) + ", maxgold = " + str(maxMoney)
  19.     sqlQuery = sqlQuery + " WHERE entry = " + str(entry) + ";"
  20.     print(sqlQuery)
  21.  
  22. def parseMoney(entries, zoneId):
  23.     fileSQL = open("D:/money_" + str(zoneId), 'w')
  24.     print("OK")
  25.     for element in entries :
  26.         url = "http://www.wowhead.com/npc=" + str(element)
  27.         copper = 0
  28.         silver = 0
  29.         gold = 0
  30.          
  31.         u = ""
  32.         try :
  33.             u = request.urlopen(str(url))
  34.         except :
  35.             print("Unable to parse entry " + str(element))
  36.             continue
  37.          
  38.         #print("Parsing" + str(element))
  39.         content = str(u.read())
  40.         moneyTotal = 0
  41.         globalMoneyRe = re.search(r'money x3D([0-9]*)', content)
  42.         #print(globalMoneyRe)
  43.         if globalMoneyRe :
  44.             moneyTotal = int(globalMoneyRe.group(1))
  45.              
  46.         gold = int(moneyTotal / 10000)
  47.         moneyTotal -= 10000 * gold
  48.          
  49.         silver = int(moneyTotal / 100)
  50.         moneyTotal -= 100 * silver
  51.          
  52.         copper = int(moneyTotal)
  53.         moneyTotal -= copper
  54.          
  55.         #print(str(gold) + \' \' + str(silver) + \' \' + str(copper))
  56.  
  57.         if(gold != 0 or silver != 0 or copper != 0):
  58.             writeSQLQuery(fileSQL, element, copper, silver, gold)
  59.      
  60.     fileSQL.close()
  61.  
  62. def parseEntriesInZone(zoneId) :
  63.     url = "http://www.wowhead.com/zone=" + str(zoneId)
  64.     u = ""
  65.     try :
  66.         u = request.urlopen(str(url))
  67.     except :
  68.         return 0
  69.      
  70.     print('OK')
  71.     content = u.read()
  72.     content = str(content)
  73.  
  74.     fileSQL = open("D:/Content.txt", 'w')
  75.     #print(str(content))
  76.     liste = list()
  77.     globalRe = re.search(r"template: 'npc', id: 'npcs'.*?}.;", content)
  78.     if globalRe :
  79.         print("OK")
  80.         globAsString = str(globalRe.group(0))
  81.         fileSQL.write(globAsString)
  82.         eachIdRe = re.search(r'"id":([0-9]*),', globAsString)
  83.         while eachIdRe :
  84.             print("Got" + str(eachIdRe.group(1)))
  85.             liste.append(eachIdRe.group(1))
  86.             globAsString = globAsString[eachIdRe.start() + len(eachIdRe.group(0)):]
  87.             eachIdRe = re.search(r'"id":([0-9]*)', globAsString)
  88.      
  89.     parseMoney(liste, zoneId)
  90.  
  91. parseEntriesInZone(5736)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement