From f4359aa6cdd24ad1eb3ba1fde551c50373f216bf Mon Sep 17 00:00:00 2001 From: Profitroll <47523801+profitrollgame@users.noreply.github.com> Date: Fri, 17 Feb 2023 11:51:38 +0100 Subject: [PATCH] Added upload_pic method --- modules/api_client.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/modules/api_client.py b/modules/api_client.py index d785a01..6805f95 100644 --- a/modules/api_client.py +++ b/modules/api_client.py @@ -1,3 +1,5 @@ +"""This is only a temporary solution. Complete Photos API client is yet to be developed.""" + import asyncio from base64 import b64decode, b64encode from os import makedirs, path, sep @@ -37,8 +39,7 @@ async def random_pic(token: Union[str, None] = None) -> Tuple[str, str]: ### Returns: * `Tuple[str, str]`: First value is an ID and the filename in the filesystem to be indexed. """ - if token is None: - token = await authorize() + token = await authorize() if token is None else token logWrite(f'{configGet("address", "posting", "api")}/albums/{configGet("album", "posting", "api")}/photos?q=&page_size=100&caption=queue') resp = get(f'{configGet("address", "posting", "api")}/albums/{configGet("album", "posting", "api")}/photos?q=&page_size=100&caption=queue', headers={"Authorization": f"Bearer {token}"}) if resp.status_code != 200: @@ -50,8 +51,8 @@ async def random_pic(token: Union[str, None] = None) -> Tuple[str, str]: pic = choice(resp.json()["results"]) return pic["id"], pic["filename"] -async def upload_pic(filepath: str) -> Tuple[bool, list]: - token = await authorize() +async def upload_pic(filepath: str, token: Union[str, None] = None) -> Tuple[bool, list]: + token = await authorize() if token is None else token try: pic_name = path.basename(filepath) files = {'file': (pic_name, open(filepath, 'rb'), 'image/jpeg')} @@ -66,9 +67,23 @@ async def upload_pic(filepath: str) -> Tuple[bool, list]: return True, duplicates except: return False, [] + +async def find_pic(name: str, caption: Union[str, None] = None, token: Union[str, None] = None) -> Union[dict, None]: + token = await authorize() if token is None else token + try: + response = get(f'{configGet("address", "posting", "api")}/albums/{configGet("album", "posting", "api")}/photos', params={"q": name, "caption": caption}, headers={"Authorization": f"Bearer {token}"}) + # logWrite(response.json()) + if response.status_code != 200: + return None + if len(response.json()["results"]) == 0: + return None + return response.json()["results"] + except Exception as exp: + logWrite(f"Could not find image with name '{name}' and caption '{caption}' due to: {exp}") + return None -async def move_pic(id: str) -> bool: - token = await authorize() +async def move_pic(id: str, token: Union[str, None] = None) -> bool: + token = await authorize() if token is None else token try: patch(f'{configGet("address", "posting", "api")}/photos/{id}?caption=sent', headers={"Authorization": f"Bearer {token}"}) return True