Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from html.parser import HTMLParser
- import re
- from copy import deepcopy
- from string import whitespace
- class BotCode(HTMLParser):
- directives = {
- 'maxbots': 0,
- 'whitelist': False,
- 'maxresponsesperminute': 8,
- 'lowercase': False,
- 'maxplayers': 16,
- 'priority': [],
- }
- def handle_starttag(self, tag, attrs):
- if tag.lower() != 'script':
- return
- for attr in attrs:
- if attr[0].lower() == 'type' and attr[1].lower() == 'bots/v1':
- self.isBotCode = True
- break
- def handle_endtag(self, tag):
- self.isBotCode = False
- def handle_data(self, data):
- if not self.isBotCode:
- return
- for line in data.split('\n'):
- line = line.translate(dict.fromkeys(map(ord, whitespace)))
- if '=' in line:
- parts = re.search('(.*?)=(.*)', line)
- if parts.group(1).lower() in self.rules:
- # Here type checks should also be made
- self.rules[parts.group(1).lower()] = parts.group(2)
- def parse(self, data):
- self.isBotCode = False
- self.rules = deepcopy(BotCode.directives)
- self.feed(data)
- parser = BotCode()
- parser.parse('''<script type="bots/v1">
- maxBots=2
- whitelist = false
- maxResponsesPerMinute=8
- lowercase = false
- maxPlayers = 16
- priority=BOT1
- </script>''')
- print(parser.rules)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement