beerds/server/modules/recognizer/repository/repository.py

55 lines
1.4 KiB
Python

from abc import ABCMeta, abstractmethod
from functools import lru_cache
from aiocache import cached, Cache # type: ignore
import ujson
class ARecognizerRepository(metaclass=ABCMeta):
@abstractmethod
async def images_dogs(self) -> dict:
pass
@abstractmethod
async def images_cats(self) -> dict:
pass
@abstractmethod
def labels_dogs(self) -> dict:
pass
@abstractmethod
def labels_cats(self) -> dict:
pass
class RecognizerRepository(ARecognizerRepository):
def __init__(self):
pass
@cached(ttl=60, cache=Cache.MEMORY)
async def images_dogs(self) -> dict:
with open("server/modules/recognizer/repository/meta/images.json", "r") as f:
return ujson.loads(f.read())["dog"]
@cached(ttl=60, cache=Cache.MEMORY)
async def images_cats(self) -> dict:
with open("server/modules/recognizer/repository/meta/images.json", "r") as f:
return ujson.loads(f.read())["cat"]
@lru_cache
def labels_cats(self) -> dict:
with open(
"server/modules/recognizer/repository/meta/labels_cats.json", "r"
) as f:
data_labels = f.read()
return ujson.loads(data_labels)
@lru_cache
def labels_dogs(self) -> dict:
with open(
"server/modules/recognizer/repository/meta/labels_dogs.json", "r"
) as f:
data_labels = f.read()
return ujson.loads(data_labels)