From 38d5f77173d38384c94f3fe4312e9b708a9145ff Mon Sep 17 00:00:00 2001 From: Fuwn Date: Tue, 25 Jul 2023 22:52:56 -0700 Subject: feat(index): allow username override --- src/due/media.py | 26 ++++++++++++++++++++++---- src/due/routes/index.py | 9 +++++++-- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/due/media.py b/src/due/media.py index cefc1c0..c4be6c9 100644 --- a/src/due/media.py +++ b/src/due/media.py @@ -15,8 +15,21 @@ def user_id(anilist): ) -def create_collection(anilist, type): - current_collection = media_list_collection(anilist, type) +def user_name_to_id(name): + return int( + requests.post( + "https://graphql.anilist.co", + json={"query": f'{{ User(name: "{name}") {{ id }} }}'}, + headers={ + "Content-Type": "application/json", + "Accept": "application/json", + }, + ).json()["data"]["User"]["id"] + ) + + +def create_collection(anilist, type, username=None): + current_collection = media_list_collection(anilist, type, username) current = [] for list in current_collection["MediaListCollection"]["lists"]: @@ -56,10 +69,15 @@ def create_collection(anilist, type): # }}""" -def media_list_collection(anilist, type): +def media_list_collection(anilist, type, username=None): return requests.post( "https://graphql.anilist.co", - json={"query": media_list_collection_query(user_id(anilist), type)}, + json={ + "query": media_list_collection_query( + user_id(anilist) if username is None else user_name_to_id(username), + type, + ) + }, headers={ "Authorization": anilist["token_type"] + " " + anilist["access_token"], "Content-Type": "application/json", diff --git a/src/due/routes/index.py b/src/due/routes/index.py index 9899b5b..408678c 100644 --- a/src/due/routes/index.py +++ b/src/due/routes/index.py @@ -49,7 +49,10 @@ def home(): if request.cookies.get("anilist"): anilist = json.loads(request.cookies.get("anilist")) start = time.time() - (current_anime, name) = create_collection(anilist, "ANIME") + (current_anime, name) = create_collection( + anilist, "ANIME", request.args.get("username") + ) + releasing_anime = [ media for media in current_anime if media["media"]["status"] == "RELEASING" ] @@ -73,7 +76,9 @@ def home(): manga_body = 'Show manga' if not disable_manga: - (current_manga, _) = create_collection(anilist, "MANGA") + (current_manga, _) = create_collection( + anilist, "MANGA", request.args.get("username") + ) releasing_manga = [ media for media in current_manga -- cgit v1.2.3