import os
import hashlib
import json
from tqdm import tqdm  # Для отображения прогресса

def calculate_hash(file_path):
    """ Функция для вычисления SHA-256 хэша файла """
    hash_sha256 = hashlib.sha256()
    with open(file_path, "rb") as f:
        for chunk in iter(lambda: f.read(4096), b""):
            hash_sha256.update(chunk)
    return hash_sha256.hexdigest()

def get_file_size(file_path):
    """ Функция для получения размера файла в байтах """
    return os.path.getsize(file_path)

def scan_directory(directory_path):
    """ Функция для сканирования директории и сбора информации о файлах """
    files_data = {}
    excluded_files = ["json_script.py", "client.json"]  # Список исключенных файлов

    for root, dirs, files in tqdm(os.walk(directory_path), desc="Scanning files"):
        for file in files:
            # Пропускаем исключенные файлы
            if file in excluded_files:
                continue

            # Получаем полный путь файла
            file_path = os.path.join(root, file)
            # Преобразуем путь относительно текущей директории
            relative_path = os.path.relpath(file_path, directory_path)
            file_size = get_file_size(file_path)
            file_hash = calculate_hash(file_path)
            files_data[relative_path] = {
                "size": file_size,
                "hash": file_hash
            }

    return files_data

def main():
    directory_to_scan = '.'  # Текущая директория
    files_info = scan_directory(directory_to_scan)

    # Записываем результат в JSON файл с именем client.json
    with open('client.json', 'w') as json_file:
        json.dump({"files": files_info}, json_file, indent=4)

    print("JSON файл успешно создан: client.json")

if __name__ == "__main__":
    main()
