55 lines
1.4 KiB
Python
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)
|