SnowFlash383935 commited on
Commit
820ccad
·
verified ·
1 Parent(s): 85229e0

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -9
app.py CHANGED
@@ -3,23 +3,25 @@ import bz2
3
  import bson
4
  import struct
5
 
6
- PARTICLE_FORMAT = "<iii ffff f ii iiiii I" # 14 полей = 52 байта
7
- PARTICLE_SIZE = 128 # размер записи в parts
8
-
9
  FIELDS = [
10
  "type", "life", "ctype",
11
  "x", "y", "vx", "vy", "temp",
12
  "tmp3", "tmp4", "flags", "tmp", "tmp2", "dcolour"
13
  ]
 
14
 
15
  def parse_parts(binary_data):
16
  count = len(binary_data) // PARTICLE_SIZE
17
  particles = []
18
  for i in range(count):
19
- chunk = binary_data[i * PARTICLE_SIZE : i * PARTICLE_SIZE + PARTICLE_SIZE]
20
- values = struct.unpack(PARTICLE_FORMAT, chunk[:52])
21
- particle = dict(zip(FIELDS, values))
22
- particles.append(particle)
 
 
 
23
  return particles
24
 
25
  def analyze_cps(file):
@@ -53,8 +55,8 @@ def analyze_cps(file):
53
  # Парсим parts
54
  if 'parts' in doc:
55
  try:
56
- binary_data = doc['parts']
57
- parsed_parts = parse_parts(bytes(binary_data))
58
  doc['parts'] = parsed_parts
59
  except Exception as e:
60
  doc['parts'] = f"[Ошибка парсинга parts]: {e}"
 
3
  import bson
4
  import struct
5
 
6
+ PARTICLE_FORMAT = "<iii ffff f ii iiiii I" # 14 полей = 56 байт
 
 
7
  FIELDS = [
8
  "type", "life", "ctype",
9
  "x", "y", "vx", "vy", "temp",
10
  "tmp3", "tmp4", "flags", "tmp", "tmp2", "dcolour"
11
  ]
12
+ PARTICLE_SIZE = 128
13
 
14
  def parse_parts(binary_data):
15
  count = len(binary_data) // PARTICLE_SIZE
16
  particles = []
17
  for i in range(count):
18
+ chunk = binary_data[i * PARTICLE_SIZE : i * PARTICLE_SIZE + 56]
19
+ try:
20
+ values = struct.unpack(PARTICLE_FORMAT, chunk)
21
+ particle = dict(zip(FIELDS, values))
22
+ particles.append(particle)
23
+ except Exception as e:
24
+ particles.append({"error": str(e)})
25
  return particles
26
 
27
  def analyze_cps(file):
 
55
  # Парсим parts
56
  if 'parts' in doc:
57
  try:
58
+ binary_data = bytes(doc['parts'])
59
+ parsed_parts = parse_parts(binary_data)
60
  doc['parts'] = parsed_parts
61
  except Exception as e:
62
  doc['parts'] = f"[Ошибка парсинга parts]: {e}"