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