Advertisement
Guest User

Untitled

a guest
Dec 8th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. from html.parser import HTMLParser
  2. import re
  3. from copy import deepcopy
  4. from string import whitespace
  5.  
  6. class BotCode(HTMLParser):
  7. directives = {
  8. 'maxbots': 0,
  9. 'whitelist': False,
  10. 'maxresponsesperminute': 8,
  11. 'lowercase': False,
  12. 'maxplayers': 16,
  13. 'priority': [],
  14. }
  15. def handle_starttag(self, tag, attrs):
  16. if tag.lower() != 'script':
  17. return
  18. for attr in attrs:
  19. if attr[0].lower() == 'type' and attr[1].lower() == 'bots/v1':
  20. self.isBotCode = True
  21. break
  22.  
  23. def handle_endtag(self, tag):
  24. self.isBotCode = False
  25.  
  26. def handle_data(self, data):
  27. if not self.isBotCode:
  28. return
  29. for line in data.split('\n'):
  30. line = line.translate(dict.fromkeys(map(ord, whitespace)))
  31. if '=' in line:
  32. parts = re.search('(.*?)=(.*)', line)
  33. if parts.group(1).lower() in self.rules:
  34. # Here type checks should also be made
  35. self.rules[parts.group(1).lower()] = parts.group(2)
  36.  
  37. def parse(self, data):
  38. self.isBotCode = False
  39. self.rules = deepcopy(BotCode.directives)
  40. self.feed(data)
  41.  
  42. parser = BotCode()
  43. parser.parse('''<script type="bots/v1">
  44. maxBots=2
  45. whitelist = false
  46. maxResponsesPerMinute=8
  47. lowercase = false
  48. maxPlayers = 16
  49. priority=BOT1
  50. </script>''')
  51.  
  52. print(parser.rules)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement