51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
from json import load
|
|
from os.path import join
|
|
|
|
from fastapi import HTTPException
|
|
|
|
from src.constants import LANGUAGES, DEFAULT_RESULT, DEFAULT_QUERY, DATA_FOLDER
|
|
|
|
|
|
def load_index(language: str, category: str):
|
|
with open(join(DATA_FOLDER, 'index', language, f'{category}.json'), 'r', encoding='utf-8') as f:
|
|
return load(f)
|
|
|
|
|
|
def load_category(lang: str, category: str, name: str) -> dict:
|
|
with open(join(DATA_FOLDER, lang, category, f'{name}.json'), 'r', encoding='utf-8') as f:
|
|
return load(f)
|
|
|
|
|
|
def load_file(folder: str, name: str) -> dict:
|
|
with open(join(DATA_FOLDER, folder, f'{name}.json'), 'r', encoding='utf-8') as f:
|
|
return load(f)
|
|
|
|
|
|
def get_file_name(query, category, langs) -> str:
|
|
for lang in langs:
|
|
index: dict[str, str] = load_index(lang, category)['names']
|
|
for key, value in index.items():
|
|
for k in key.lower().split(' '):
|
|
if k.startswith(query.lower()):
|
|
return value
|
|
else:
|
|
raise HTTPException(404)
|
|
|
|
|
|
def parse_query_langs(langs: str) -> list[str]:
|
|
languages = langs.replace(' ', '').split(',')
|
|
query = []
|
|
for i in languages:
|
|
for j in LANGUAGES:
|
|
if j.lower().startswith(i):
|
|
query.append(j)
|
|
return query if len(query) > 0 else DEFAULT_QUERY
|
|
|
|
|
|
def parse_result_lang(lang: str) -> str:
|
|
for l in LANGUAGES:
|
|
if l.lower().startswith(lang):
|
|
return l
|
|
else:
|
|
return DEFAULT_RESULT
|