33 lines
830 B
Python
33 lines
830 B
Python
|
|
import os
|
||
|
|
import zlib
|
||
|
|
from typing import Optional
|
||
|
|
|
||
|
|
from facefusion.filesystem import is_file
|
||
|
|
|
||
|
|
|
||
|
|
def create_hash(content : bytes) -> str:
|
||
|
|
return format(zlib.crc32(content), '08x')
|
||
|
|
|
||
|
|
|
||
|
|
def validate_hash(validate_path : str) -> bool:
|
||
|
|
hash_path = get_hash_path(validate_path)
|
||
|
|
|
||
|
|
if is_file(hash_path):
|
||
|
|
with open(hash_path, 'r') as hash_file:
|
||
|
|
hash_content = hash_file.read().strip()
|
||
|
|
|
||
|
|
with open(validate_path, 'rb') as validate_file:
|
||
|
|
validate_content = validate_file.read()
|
||
|
|
|
||
|
|
return create_hash(validate_content) == hash_content
|
||
|
|
return False
|
||
|
|
|
||
|
|
|
||
|
|
def get_hash_path(validate_path : str) -> Optional[str]:
|
||
|
|
if is_file(validate_path):
|
||
|
|
validate_directory_path, _ = os.path.split(validate_path)
|
||
|
|
validate_file_name, _ = os.path.splitext(_)
|
||
|
|
|
||
|
|
return os.path.join(validate_directory_path, validate_file_name + '.hash')
|
||
|
|
return None
|