-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
56 lines (47 loc) · 2.09 KB
/
main.py
File metadata and controls
56 lines (47 loc) · 2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
from zipfile import ZipFile
import shutil
from pathlib import Path
from os import mkdir
mkdir("packs/compressed-edit")
folder = Path("packs/compressed-edit")
try:
with ZipFile("packs/base.zip", "r") as base_zip:
base_files = [
info.filename for info in base_zip.infolist() if not info.is_dir()
]
with ZipFile("packs/edit.zip", "r") as edit_zip:
edit_files = [
info.filename for info in edit_zip.infolist() if not info.is_dir()
]
common_files = set(base_files) & set(edit_files)
edit_only_files = set(edit_files) - set(base_files)
for file_name in common_files:
if any(blocked in file_name for blocked in ["pack.mcmeta"]):
continue
with base_zip.open(file_name) as base_content:
with edit_zip.open(file_name) as edit_content:
if edit_content.read() != base_content.read():
Path(f"packs/compressed-edit/{file_name}").parent.mkdir(
parents=True, exist_ok=True
)
with open(f"packs/compressed-edit/{file_name}", "wb") as f:
f.write(edit_zip.read(file_name))
else:
print(f"Detected copy file: `{file_name}`")
for file_name in edit_only_files:
Path(f"packs/compressed-edit/{file_name}").parent.mkdir(
parents=True, exist_ok=True
)
with open(f"packs/compressed-edit/{file_name}", "wb") as f:
f.write(edit_zip.read(file_name))
files = []
for path in folder.rglob("*"):
if path.is_file():
files.append(path)
with ZipFile("packs/compressed-edit.zip", "w") as zip_ref:
for file_path in files:
zip_ref.write(file_path, arcname=file_path.relative_to(folder))
except Exception as e:
print(e) # don't crash so it...
# ...always removes compressed-edit folder
shutil.rmtree(folder)