def print_info(path): """Print basic info.""" with open(path, 'rb') as handle: header = mgz.header.parse_stream(handle) handle.seek(0) summary = Summary(handle) dataset = summary.get_dataset() print('-------------') print( tabulate( [ ['Path', path], [ 'Duration', mgz.util.convert_to_timestamp( summary.get_duration() / 1000) ], ['Completed', summary.get_completed()], ['Restored', header.initial.restore_time > 0], ['Postgame', bool(summary.get_postgame())], ['Version', mgz.const.VERSIONS[header.version]], [ 'Dataset', '{} {}'.format(dataset['name'], dataset['version']) ], ['Hash', summary.get_hash().hexdigest()], ['Encoding', summary.get_encoding()], ['Map', summary.get_map()['name']] # pylint: disable=unsubscriptable-object ], tablefmt='plain'))
def print_chat(path): """Extract chat.""" with open(path, 'rb') as handle: summary = Summary(handle) encoding = summary.get_encoding() handle.seek(summary.body_pos) while handle.tell() < summary.size: operation = mgz.body.operation.parse_stream(handle) if operation.type == 'message' and operation.subtype == 'chat': print(operation.data.text.decode(encoding))
def print_info(path): """Print basic info.""" with open(path, 'rb') as handle: header = mgz.header.parse_stream(handle) handle.seek(0) summary = Summary(handle) dataset = summary.get_dataset() print('-------------') print( tabulate( [ ['Path', path], [ 'Duration', mgz.util.convert_to_timestamp( summary.get_duration() / 1000) ], ['Completed', summary.get_completed()], ['Restored', header.initial.restore_time > 0], ['Postgame', bool(summary.get_postgame())], ['Objects', bool(summary.get_objects()['objects'])], [ 'Version', '{} ({}, {}, {})'.format( header.version.name, header.game_version, header.save_version, header.log_version) ], [ 'Dataset', '{} {}'.format(dataset['name'], dataset['version']) ], ['File Hash', summary.get_file_hash()], [ 'Match Hash', summary.get_hash().hexdigest() if summary.get_hash() else None ], ['Encoding', summary.get_encoding()], ['Language', summary.get_language()], [ 'Map', '{} ({})'.format(summary.get_map()['name'], summary.get_map()['seed']) ] # pylint: disable=unsubscriptable-object ], tablefmt='plain'))
def print_info(path): """Print basic info.""" with open(path, 'rb') as handle: summary = Summary(handle) dataset = summary.get_dataset() print('-------------') print(tabulate([ ['Path', path], ['Duration', mgz.util.convert_to_timestamp(summary.get_duration() / 1000)], ['Played', datetime.utcfromtimestamp(summary.get_played()) if summary.get_played() else None], ['Completed', summary.get_completed()], ['Restored', summary.get_restored()[0]], ['Postgame', bool(summary.get_postgame())], ['Version', '{} ({}, {}, {}, {})'.format(*summary.get_version())], ['Dataset', '{} {}'.format(dataset['name'], dataset['version'])], ['File Hash', summary.get_file_hash()], ['Match Hash', summary.get_hash().hexdigest() if summary.get_hash() else None], ['Encoding', summary.get_encoding()], ['Language', summary.get_language()], ['Map', '{} ({}, {})'.format(summary.get_map()['name'], summary.get_map()['seed'], summary.get_map()['mod_id'])] # pylint: disable=unsubscriptable-object ], tablefmt='plain'))