#!/usr/bin/env python3
import os
import json
import zlib

ROOT = "/var/www/cdn"
FILES_DIR = os.path.join(ROOT, "files")
OUTPUT = os.path.join(ROOT, "hash.json")
DATE = 4   # одно значение на все файлы

def crc32(path):
    c = 0
    with open(path, "rb") as f:
        while True:
            chunk = f.read(8192)
            if not chunk:
                break
            c = zlib.crc32(chunk, c)
    return str(c & 0xFFFFFFFF)

def main():
    result = []

    for dirpath, _, filenames in os.walk(FILES_DIR):
        for name in filenames:
            full = os.path.join(dirpath, name)
            rel = os.path.relpath(full, ROOT).replace("\\", "/")
            if not rel.startswith("files/"):
                rel = "files/" + rel.lstrip("/")

            result.append({
                "date": DATE,
                "hash": crc32(full),
                "name": name,
                "path": rel,
                "size": os.path.getsize(full)
            })

    with open(OUTPUT, "w", encoding="utf-8") as f:
        json.dump(result, f, ensure_ascii=False, indent=2)

    print(f"OK: {len(result)} files -> {OUTPUT}")

if __name__ == "__main__":
    main()