2022-07-22 13:59:14 +02:00

47 lines
1.0 KiB
Python

import typing
from requests import Session
from al_arr_sync.types import AnyDict
USER_WATCHING_QUERY = """
query ($userName: String) {
MediaListCollection(userName: $userName, type:ANIME, status:CURRENT) {
lists {
entries {
media {
title {
english
}
format
}
}
}
}
}
"""
class AniListClient:
def __init__(self) -> None:
self.graphql_api_url = "https://graphql.anilist.co/"
self.http_session = Session()
def currently_watching(self, username: str) -> typing.List[AnyDict]:
resp = self.http_session.post(
self.graphql_api_url,
json={"query": USER_WATCHING_QUERY, "variables": {"userName": username}},
)
resp_data: AnyDict = resp.json()
if errors := resp_data.get("errors"):
raise Exception(errors)
media = [
entry
for lst in resp_data["data"]["MediaListCollection"]["lists"]
for entry in lst["entries"]
]
return media