1- from mpyq import MPQArchive
2- from utils import ByteStream
3- from objects import Replay
4- from readers import *
5- from processors import *
6- from collections import OrderedDict
7-
8- __version__ = "0.1.0"
9-
101import os
112
12- class DefaultConfig (object ):
13- def __init__ (self ):
14- self .readers = OrderedDict ()
15- self .readers ['replay.initData' ] = [ ReplayInitDataReader () ]
16- self .readers ['replay.details' ] = [ ReplayDetailsReader () ]
17- self .readers ['replay.attributes.events' ] = [ AttributeEventsReader_17326 (), AttributeEventsReader () ]
18- self .readers ['replay.message.events' ] = [ MessageEventsReader () ]
19- self .readers ['replay.game.events' ] = [ GameEventsReader_17326 (), GameEventsReader_16561 (), GameEventsReader () ]
20-
21- self .processors = [
22- PeopleProcessor ,
23- AttributeProcessor ,
24- TeamsProcessor ,
25- MessageProcessor ,
26- RecorderProcessor ,
27- EventProcessor ,
28- ApmProcessor ,
29- ResultsProcessor
30- ]
3+ from mpyq import MPQArchive
4+ from config import DefaultConfig
315
326def read (location ,config = DefaultConfig ()):
337 if not os .path .exists (location ):
@@ -47,7 +21,7 @@ def read_file(filename,config=DefaultConfig()):
4721
4822 with open (filename ) as replay_file :
4923 release ,frames = read_header (replay_file )
50- replay = Replay (filename ,release ,frames )
24+ replay = config . ReplayClass (filename ,release ,frames )
5125 archive = MPQArchive (filename ,listfile = False )
5226
5327 #Extract and Parse the relevant files
@@ -64,23 +38,6 @@ def read_file(filename,config=DefaultConfig()):
6438 replay = process (replay )
6539
6640 return replay
67-
68- def read_header (file ):
69- source = ByteStream (file .read ())
70-
71- #Check the file type for the MPQ header bytes
72- if source .get_hex (4 ).upper () != "4D50511B" :
73- raise ValueError ("File '%s' is not an MPQ file" % file .name )
74-
75- #Extract replay header data, we don't actually use this for anything
76- max_data_size = source .get_little_32 () #possibly data max size
77- header_offset = source .get_little_32 () #Offset of the second header
78- data_size = source .get_little_32 () #possibly data size
79-
80- #Extract replay attributes from the mpq
81- data = source .parse_serialized_data ()
82-
83- #return the release and frames information
84- return data [1 ],data [3 ]
8541
86- __all__ = [DefaultConfig ,read ,read_file ]
42+ __all__ = [DefaultConfig ,read ,read_file ]
43+ __version__ = "0.1.0"
0 commit comments