reporter
This commit is contained in:
+17
-3
@@ -1,10 +1,24 @@
|
||||
import ctypes
|
||||
|
||||
from blake3 import blake3
|
||||
|
||||
# Windows atributy pro cloud/placeholder soubory
|
||||
_FILE_ATTRIBUTE_OFFLINE = 0x00001000
|
||||
_FILE_ATTRIBUTE_RECALL_ON_OPEN = 0x00040000
|
||||
_FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS = 0x00400000
|
||||
_CLOUD_MASK = _FILE_ATTRIBUTE_OFFLINE | _FILE_ATTRIBUTE_RECALL_ON_OPEN | _FILE_ATTRIBUTE_RECALL_ON_DATA_ACCESS
|
||||
|
||||
|
||||
def is_cloud_placeholder(path: str) -> bool:
|
||||
"""Vrátí True pokud soubor není lokálně stažený (Dropbox/OneDrive placeholder)."""
|
||||
attrs = ctypes.windll.kernel32.GetFileAttributesW(path)
|
||||
if attrs == 0xFFFFFFFF: # INVALID_FILE_ATTRIBUTES
|
||||
return False
|
||||
return bool(attrs & _CLOUD_MASK)
|
||||
|
||||
|
||||
def blake3_file(path, chunk_size=1024 * 1024):
|
||||
"""
|
||||
Spočítá BLAKE3 hash souboru po blocích (bez načtení do paměti)
|
||||
"""
|
||||
"""Spočítá BLAKE3 hash souboru po blocích (bez načtení do paměti)."""
|
||||
h = blake3()
|
||||
with open(path, "rb") as f:
|
||||
for chunk in iter(lambda: f.read(chunk_size), b""):
|
||||
|
||||
Reference in New Issue
Block a user