35 lines
1.1 KiB
Python
35 lines
1.1 KiB
Python
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())
|