scon/logs/session.py

70 lines
2.3 KiB
Python

"""
Logging Session.
"""
import zipfile, logging, os
from logfiles import CombatLogFile, GameLogFile
class LogSession(object):
"""
The Log-Session is supposed to save one directory of logs.
It can parse its logs, and build up its internal structure into Battle Instances etc.
"""
def __init__(self, directory):
''' if directory is a file, it will be handled as a compressed folder '''
self.battles = []
self.user = None
# various logfiles used.
self.combat_log = None
self.game_log = None
self.chat_log = None
# self.net_log = None
self.directory = directory
self._zip_source = False
def parse_files(self):
''' parses the logfiles '''
# check if directory is a file
self._zip_source = os.path.isfile(self.directory) or False
if self._zip_source:
self._unzip_logs()
else:
self.combat_log = CombatLogFile(os.path.join(self.directory, 'combat.log'))
self.combat_log.read()
self.game_log = GameLogFile(os.path.join(self.directory, 'game.log'))
self.game_log.read()
# parse all files
self.combat_log.parse()
self.game_log.parse()
def determine_owner(self):
''' determines the user in the parsed gamelog '''
pass
def parse_battles(self):
''' parses the battles '''
pass
def _unzip_logs(self):
z = zipfile.ZipFile(self.directory, "r")
for filename in z.namelist():
fn = os.path.split(filename)[1] or ''
fn = fn.lower()
if fn:
if fn == 'combat.log':
self.combat_log = CombatLogFile(fn)
self.combat_log.set_data(z.read(filename))
elif fn == 'game.log':
self.game_log = GameLogFile(fn)
self.game_log.set_data(z.read(filename))
if __name__ == '__main__':
l_raw = LogSession('D:\\Users\\g4b\\Documents\\My Games\\sc\\2014.05.17 15.50.28')
l_zip = LogSession('D:\\Users\\g4b\\Documents\\My Games\\sc\\2014.05.20 23.49.19.zip')
l_zip.parse_files()
print l_zip.combat_log.lines