summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gamechestcli/gamechest/runners/extract.py10
1 files changed, 8 insertions, 2 deletions
diff --git a/gamechestcli/gamechest/runners/extract.py b/gamechestcli/gamechest/runners/extract.py
index cb8009a..8101e02 100644
--- a/gamechestcli/gamechest/runners/extract.py
+++ b/gamechestcli/gamechest/runners/extract.py
@@ -1,5 +1,6 @@
import os
import re
+import struct
import subprocess
import humanfriendly
@@ -13,6 +14,8 @@ class Extract(RunnerBase):
_progress_re = re.compile(r'^\s*(\S+)\s+\[([^]]+)/s\]\s+ETA\s+(\S+)\s*$')
def __init__(self, src, dst):
+ import sys
+ print('src', src, 'dst', dst, file=sys.stderr)
common_parameters = dict(
encoding='utf8',
env={**os.environ,
@@ -34,10 +37,13 @@ class Extract(RunnerBase):
lzip_command = '/usr/bin/lzip'
plzip_command = '/usr/bin/plzip'
uncompress_command_to_use = [lzip_command, '--decompress']
- if str(src).endswith('.tlz'):
+ first_word_magic = 0
+ with open(src, 'rb') as stream:
+ first_word_magic = struct.unpack('>L', stream.read(4))
+ if first_word_magic == 0x4c5a4950: # lzip magic
if os.path.exists(plzip_command):
uncompress_command_to_use = [plzip_command, '--decompress']
- elif str(src).endswith('.tzst'):
+ elif first_word_magic == 0x28B52FFD:
uncompress_command_to_use = ['zstd', '-T0', '-d', '--stdout']
self.zip_proc = subprocess.Popen(
uncompress_command_to_use,