from mappers.anilist_filters import to_anilist_filters from sources.anilist_async_client import search_raw from normalizers.anilist_normalizer import normalize_media import asyncio import pprint class AniListSource: async def search(self, local_filters: dict) -> list: ani_filters = to_anilist_filters(local_filters) raw_list = await search_raw(ani_filters) return [normalize_media(r) for r in raw_list] async def _demo() -> None: src = AniListSource() filters = { "query": "monogatari", # "year": 2017, # "season": "winter", # "type": "tv", # "limit": 5, } print("Запускаю поиск с фильтрами:", filters) titles = await src.search(filters) print("Найдено тайтлов:", len(titles)) for t in titles: # t.title_names — dict[str, list[str]] # en = (t.title_names.get("en") or [""])[0] # print("-", en, "|", t.release_year, t.release_season) pprint.pprint(t) if __name__ == "__main__": asyncio.run(_demo())