WIP: Migration to async_pymongo
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
from pathlib import Path
|
||||
from typing import Union
|
||||
from typing import Any, List, Mapping, Union
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
@@ -9,7 +9,7 @@ from scipy import spatial
|
||||
from modules.database import col_photos
|
||||
|
||||
|
||||
def hash_array_to_hash_hex(hash_array):
|
||||
def hash_array_to_hash_hex(hash_array) -> str:
|
||||
# convert hash array of 0 or 1 to hash string in hex
|
||||
hash_array = np.array(hash_array, dtype=np.uint8)
|
||||
hash_str = "".join(str(i) for i in 1 * hash_array.flatten())
|
||||
@@ -23,10 +23,10 @@ def hash_hex_to_hash_array(hash_hex) -> NDArray:
|
||||
return np.array(list(array_str), dtype=np.float32)
|
||||
|
||||
|
||||
def get_duplicates_cache(album: str) -> dict:
|
||||
async def get_duplicates_cache(album: str) -> Mapping[str, Any]:
|
||||
return {
|
||||
photo["filename"]: [photo["_id"].__str__(), photo["hash"]]
|
||||
for photo in col_photos.find({"album": album})
|
||||
async for photo in col_photos.find({"album": album})
|
||||
}
|
||||
|
||||
|
||||
@@ -52,9 +52,9 @@ async def get_phash(filepath: Union[str, Path]) -> str:
|
||||
return hash_array_to_hash_hex(dct_block.flatten())
|
||||
|
||||
|
||||
async def get_duplicates(hash_string: str, album: str) -> list:
|
||||
async def get_duplicates(hash_string: str, album: str) -> List[Mapping[str, Any]]:
|
||||
duplicates = []
|
||||
cache = get_duplicates_cache(album)
|
||||
cache = await get_duplicates_cache(album)
|
||||
for image_name, image_object in cache.items():
|
||||
try:
|
||||
distance = spatial.distance.hamming(
|
||||
|
Reference in New Issue
Block a user