Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import base64, zlib, urllib, re, sqlite3, xml.etree.ElementTree as xml, xml.parsers.expat, sys, time
- Database = sqlite3.connect("dbfile.sqlite")
- Database.isolation_level = None
- Cursor = Database.cursor()
- Database.row_factory = sqlite3.Row
- Database.text_factory = str
- KEY = "MFzg66OpuXhyjARDqlOBfKtWtwDzsg4tsIQv2"
- def mapsParser():
- m = ['P1','P3','P4','P5','P6','P7','P8','P9','P10','P11','P13','P17','P18','P19','P24','P32']
- l = {}
- for b in m:
- try:
- a = urllib.urlopen('http://cheese.formice.com/maps?list='+b).read().split('<div class="pagination">')[1].split('</div>')[0].split('<a ')
- for i in a:
- if re.search('</a>',i):
- i = i.split('">')[1].split('</a>')[0]
- if i.isdigit():
- l[b] = i
- except:
- pass
- return l
- def checkXML(xmlString):
- if re.search("ENTITY", xmlString):
- return False
- elif re.search("<html>", xmlString):
- return False
- else:
- try:
- parser = xml.parsers.expat.ParserCreate()
- parser.Parse(xmlString)
- return True
- except Exception, e:
- print e
- return False
- def convert(arg1, arg2):
- loc6 = None
- if arg2 == "":return arg1
- arg2 = arg2.replace(" ", "")
- if len(arg2) < 8:return false
- loc1 = len(arg2)
- if loc1 > 32:loc1 = 32
- loc2 = []
- loc3 = 0
- while loc3 < loc1:
- loc2.append(loc3)
- loc2[loc3] = ord(arg2[loc3]) & 31
- loc3+=1
- loc4=0
- loc5=0
- while loc5 < len(arg1):
- loc6 = ord(arg1[loc5])
- if loc6 + 224:
- arg1 = arg1[0:loc5] + chr(loc6 ^ loc2[loc4]) + arg1[loc5 + 1:]
- loc4 = (loc4 + 1) % loc1
- loc5 += 1
- return arg1
- def getMaps(pa, pg):
- p = urllib.urlopen('http://cheese.formice.com/api/map/maps.php?p='+str(pg)+'&ord=date&cat='+pa).read().replace('</map>', '').replace('<root>', '').replace('</root>', '').split('<map>')
- for i in p:
- try:
- id, username, data = i.split('<id>')[1].split('</id>')[0], i.split('<username>')[1].split('</username>')[0], i.split('<data>')[1].split('</data>')[0]
- xml = zlib.decompress(base64.b64decode(convert(base64.b64decode(data),KEY)))
- if checkXML(xml):
- Cursor.execute("INSERT INTO mapeditor (name, code, mapxml, yesvotes, novotes, perma, deleted) values (?, ?, ?, ?, ?, ?, ?)", (username, id, xml, 0, 0, pa.replace('P', ''), "0"))
- print '@'+str(id)
- except Exception as e:
- pass
- def main():
- print 'Get maps count'
- b = mapsParser()
- for c in b:
- print 'Perma '+c
- for u in range(1,int(b[c])):
- getMaps(c,u)
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement