Skip to content

Commit 4a94f28

Browse files
committed
Creates a config.py module and cleans up some basic code organization
1 parent 6144e47 commit 4a94f28

File tree

4 files changed

+55
-290
lines changed

4 files changed

+55
-290
lines changed

sc2reader/__init__.py

Lines changed: 5 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,7 @@
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-
101
import 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

326
def 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"

sc2reader/config.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from collections import OrderedDict
2+
3+
from sc2reader.objects import Replay
4+
from sc2reader.processors import *
5+
from sc2reader.readers import *
6+
7+
class DefaultConfig(object):
8+
def __init__(self):
9+
self.ReplayClass = Replay
10+
11+
self.readers = OrderedDict()
12+
self.readers['replay.initData'] = [ ReplayInitDataReader() ]
13+
self.readers['replay.details'] = [ ReplayDetailsReader() ]
14+
self.readers['replay.attributes.events'] = [ AttributeEventsReader_17326(), AttributeEventsReader() ]
15+
self.readers['replay.message.events'] = [ MessageEventsReader() ]
16+
self.readers['replay.game.events'] = [ GameEventsReader_17326(), GameEventsReader_16561(), GameEventsReader() ]
17+
18+
self.processors = [
19+
PeopleProcessor,
20+
AttributeProcessor,
21+
TeamsProcessor,
22+
MessageProcessor,
23+
RecorderProcessor,
24+
EventProcessor,
25+
ApmProcessor,
26+
ResultsProcessor
27+
]

sc2reader/replay.py

Lines changed: 0 additions & 236 deletions
This file was deleted.

sc2reader/utils.py

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
from cStringIO import StringIO
2+
from os import SEEK_CUR, SEEK_END
3+
from struct import unpack
4+
15
class PersonDict(dict):
26
"""Delete is supported on the pid index only"""
37
def __init__(self, *args, **kwargs):
@@ -27,11 +31,6 @@ def __setitem__(self, key, value):
2731
self._key_map[value.name] = key
2832

2933
super(PersonDict, self).__setitem__(value.pid, value)
30-
31-
32-
from cStringIO import StringIO
33-
from os import SEEK_CUR, SEEK_END
34-
from struct import unpack
3534

3635
class ByteStream(object):
3736
def __init__(self, stream):
@@ -177,4 +176,22 @@ def parse_serialized_data(self):
177176
else:
178177
raise TypeError("Uknown Data Type: '%s'" % datatype)
179178

180-
return data
179+
return data
180+
181+
def read_header(file):
182+
source = ByteStream(file.read())
183+
184+
#Check the file type for the MPQ header bytes
185+
if source.get_hex(4).upper() != "4D50511B":
186+
raise ValueError("File '%s' is not an MPQ file" % file.name)
187+
188+
#Extract replay header data, we don't actually use this for anything
189+
max_data_size = source.get_little_32() #possibly data max size
190+
header_offset = source.get_little_32() #Offset of the second header
191+
data_size = source.get_little_32() #possibly data size
192+
193+
#Extract replay attributes from the mpq
194+
data = source.parse_serialized_data()
195+
196+
#return the release and frames information
197+
return data[1],data[3]

0 commit comments

Comments
 (0)