Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions chunk_zipper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
import os
import zipfile
import argparse
import math
import glob

CHUNK_SIZE = 100 * 1024 * 1024 # 100 MB

def compress_directory(source_dir, output_dir):
os.makedirs(output_dir, exist_ok=True)
temp_zip = os.path.join(output_dir, "temp.zip")

print(f"Zipping {source_dir} into {temp_zip}...")
with zipfile.ZipFile(temp_zip, 'w', zipfile.ZIP_DEFLATED) as zipf:
for foldername, subfolders, filenames in os.walk(source_dir):
for filename in filenames:
filepath = os.path.join(foldername, filename)
arcname = os.path.relpath(filepath, start=source_dir)
zipf.write(filepath, arcname)

total_size = os.path.getsize(temp_zip)
num_parts = math.ceil(total_size / CHUNK_SIZE)
print(f"Splitting into {num_parts} parts...")

with open(temp_zip, 'rb') as f:
for i in range(num_parts):
chunk_data = f.read(CHUNK_SIZE)
part_filename = os.path.join(output_dir, f"part{str(i+1).zfill(2)}.zip")
with open(part_filename, 'wb') as chunk_file:
chunk_file.write(chunk_data)
print(f"Created: {part_filename}")

os.remove(temp_zip)
print("Temporary file removed. Done.")

def extract_chunks(input_dir, output_dir):
os.makedirs(output_dir, exist_ok=True)
part_files = sorted(glob.glob(os.path.join(input_dir, "part*.zip")))
if not part_files:
print("No parts found in the specified directory.")
return

reassembled = os.path.join(input_dir, "reassembled.zip")

print(f"Found parts: {part_files}")
with open(reassembled, 'wb') as output:
for part in part_files:
with open(part, 'rb') as pf:
output.write(pf.read())
print(f"Reassembled into: {reassembled}")

with zipfile.ZipFile(reassembled, 'r') as zipf:
zipf.extractall(output_dir)
print(f"Extracted to: {output_dir}")

os.remove(reassembled)
print("Removed reassembled zip.")

def main():
parser = argparse.ArgumentParser(description="Chunked Zip Tool")
subparsers = parser.add_subparsers(dest='command')

compress_parser = subparsers.add_parser('compress')
compress_parser.add_argument('source_dir', help="Directory to compress")
compress_parser.add_argument('output_dir', help="Directory to save chunked zip parts")

extract_parser = subparsers.add_parser('extract')
extract_parser.add_argument('input_dir', help="Directory containing chunked parts")
extract_parser.add_argument('output_dir', help="Directory to extract contents to")

args = parser.parse_args()

if args.command == 'compress':
compress_directory(args.source_dir, args.output_dir)
elif args.command == 'extract':
extract_chunks(args.input_dir, args.output_dir)
else:
parser.print_help()

if __name__ == "__main__":
main()

# python chunk_zipper.py compress ./windows ./win_c
# python chunk_zipper.py extract ./win_c ./windows
Binary file added win_c/part01.zip
Binary file not shown.
Binary file added win_c/part02.zip
Binary file not shown.
Binary file removed windows/AssistServer/AssistServer.exe
Binary file not shown.
Binary file removed windows/AssistServer/PIL/_imaging.pyd
Binary file not shown.
Binary file removed windows/AssistServer/PIL/_imagingcms.pyd
Binary file not shown.
Binary file removed windows/AssistServer/PIL/_imagingmath.pyd
Binary file not shown.
Binary file removed windows/AssistServer/PIL/_imagingtk.pyd
Binary file not shown.
Binary file removed windows/AssistServer/PIL/_webp.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_asyncio.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_bz2.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_ctypes.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_decimal.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_hashlib.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_lzma.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_multiprocessing.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_overlapped.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_queue.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_socket.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_ssl.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_tkinter.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_uuid.pyd
Binary file not shown.
Binary file removed windows/AssistServer/_zoneinfo.pyd
Binary file not shown.
4,897 changes: 0 additions & 4,897 deletions windows/AssistServer/certifi/cacert.pem

This file was deleted.

Binary file removed windows/AssistServer/charset_normalizer/md.pyd
Binary file not shown.
Binary file not shown.
Binary file removed windows/AssistServer/libcrypto-1_1.dll
Binary file not shown.
Binary file removed windows/AssistServer/libffi-7.dll
Binary file not shown.
Binary file removed windows/AssistServer/libssl-1_1.dll
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed windows/AssistServer/numpy/fft/_pocketfft_umath.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/linalg/_umath_linalg.pyd
Binary file not shown.
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_common.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_generator.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_mt19937.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_pcg64.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_philox.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/_sfc64.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/bit_generator.pyd
Binary file not shown.
Binary file removed windows/AssistServer/numpy/random/mtrand.pyd
Binary file not shown.
Binary file not shown.
Binary file removed windows/AssistServer/pyexpat.pyd
Binary file not shown.
Binary file removed windows/AssistServer/python3.dll
Binary file not shown.
Binary file removed windows/AssistServer/python310.dll
Binary file not shown.
Binary file removed windows/AssistServer/select.pyd
Binary file not shown.
Binary file removed windows/AssistServer/tcl86t.dll
Binary file not shown.
Binary file removed windows/AssistServer/tk86t.dll
Binary file not shown.
Binary file removed windows/AssistServer/unicodedata.pyd
Binary file not shown.
Binary file removed windows/AssistServer/vcruntime140.dll
Binary file not shown.
Binary file removed windows/AssistServer/vcruntime140_1.dll
Binary file not shown.
Binary file removed windows/AssistServer/zstandard/_cffi.pyd
Binary file not shown.
Binary file removed windows/AssistServer/zstandard/backend_c.pyd
Binary file not shown.
Loading