#!c:\\Python27\python.exe

import os,sys
from sc2reader import Replay
from sc2reader.exceptions import ParseError

def doFile(filename):
    
    try:
        replay = Replay(filename)
        print "\nStarcraft II Version %s" % replay.releaseString
        print "%s on %s played on %s" % (replay.type,replay.map,replay.date)
        
        #Player[0] is None so that players can be indexed by ID
        for team,players in replay.teams.iteritems():
            print "\n\tTeam %s: %s" % (team,replay.results[team])
            for player in players:
                print "\t\t%s" % player
        
    except ParseError as e:
        prev = e.replay.events[-1]
        event = e.event
        bytes = e.event.bytes+e.bytes.peek(30)
        print "\nVersion %s replay:\n\t%s" % (e.replay.releaseString,e.replay.file)
        print "\tError parsing event Type=%s, Code=%s" % (hex(e.event.type),hex(e.event.code))
        print "\tPrevious Event: %s" % prev.name
        print "\t\t"+prev.bytes
        print "\tFollowing Bytes:"
        print "\t\t"+bytes
    

def doDir(dirname):
    for name in os.listdir(dirname):
        replaypath = os.path.join(dirname,name)
        
        if os.path.isfile(replaypath):
            doFile(replaypath)
        elif os.path.isdir(replaypath):
            doDir(replaypath)

assert len(sys.argv)>1, "A path to at least 1 sc2replay file is required"
for filename in sys.argv[1:]:
    if os.path.isfile(filename):
        doFile(filename)
    elif os.path.isdir(filename):
        doDir(filename)
