updated analyze code to use chat.log
added system messages - albeit it does not determine sub-stuff chat log still needs to eat following packets
This commit is contained in:
15
logs/chat.py
15
logs/chat.py
@@ -24,6 +24,7 @@ class ChatLog(Log):
|
||||
|
||||
def __init__(self, values=None):
|
||||
self.values = values or {}
|
||||
self.reviewed = False
|
||||
|
||||
def unpack(self, force=False):
|
||||
if self.reviewed and not force:
|
||||
@@ -48,6 +49,19 @@ class ChatLog(Log):
|
||||
''' returns a String readable by humans explaining this Log '''
|
||||
return self.values.get('log', 'Unknown Chat Log')
|
||||
|
||||
class SystemMessage(ChatLog):
|
||||
matcher = re.compile(r"^<\s+SYSTEM>\s(?P<message>.*)")
|
||||
|
||||
@classmethod
|
||||
def _is_handler(cls, log):
|
||||
if log.get('log', '').lstrip().startswith('< SYSTEM>'):
|
||||
return True
|
||||
return False
|
||||
|
||||
def explain(self):
|
||||
return '[SYSTEM]: %(message)s' % self.values
|
||||
|
||||
|
||||
|
||||
class PrivateMessageReceived(ChatLog):
|
||||
matcher = re.compile(r"^<\s\s\s\sPRIVATE From>\[\s*(?P<nickname>[^\]]+)\]\s(?P<message>.*)")
|
||||
@@ -146,6 +160,7 @@ class ChatServerDisconnect(ChatLog):
|
||||
return '[disconnected]'
|
||||
|
||||
CHAT_LOGS = [
|
||||
SystemMessage,
|
||||
PrivateMessageReceived,
|
||||
PrivateMessageSent,
|
||||
ChatMessage, # private messages need to be before chatmessage.
|
||||
|
||||
@@ -39,6 +39,7 @@ class CombatLog(Log):
|
||||
|
||||
def __init__(self, values=None):
|
||||
self.values = values or {}
|
||||
self.reviewed = False
|
||||
|
||||
def unpack(self, force=False):
|
||||
if self.reviewed and not force:
|
||||
|
||||
@@ -58,6 +58,7 @@ class GameLog(Log):
|
||||
|
||||
def __init__(self, values=None):
|
||||
self.values = values
|
||||
self.reviewed = False
|
||||
|
||||
def unpack(self, force=False):
|
||||
if self.reviewed and not force:
|
||||
|
||||
@@ -117,6 +117,11 @@ class LogFileSession(LogSession):
|
||||
self.game_log.set_data(z.read(filename))
|
||||
self.game_log.parse()
|
||||
self.files_parsed.append('game.log')
|
||||
elif fn == 'chat.log' and (not files or fn in files) and not 'chat.log' in self.files_parsed:
|
||||
self.chat_log = ChatLogFile(fn)
|
||||
self.chat_log.set_data(z.read(filename))
|
||||
self.chat_log.parse()
|
||||
self.files_parsed.append('chat.log')
|
||||
except:
|
||||
self._error = True
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user