From b5973e2a7897d6c5a107454e58ea7d8dc8bb54e7 Mon Sep 17 00:00:00 2001 From: Nico Jensen Date: Wed, 23 Aug 2023 15:43:44 +0200 Subject: [PATCH] Class to use Pixelfed API --- PixelfedAPI.py | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 PixelfedAPI.py diff --git a/PixelfedAPI.py b/PixelfedAPI.py new file mode 100644 index 0000000..7414578 --- /dev/null +++ b/PixelfedAPI.py @@ -0,0 +1,56 @@ +import os +import json +import requests + +class PixelfedAPI: + def __init__(self, url, token): + self.serverurl = url + self.accesstoken = token + + def mediaUpload(self, image): + serverurl = self.serverurl() + apiurl = serverurl + "/api/v1/media" + + accessToken = self.accesstoken() + headers = { + "Authorization": f"Bearer {accessToken}" + } + + try: + with open(image, "rb") as imageFile: + f = {"file": imageFile} + response = requests.post(apiurl, headers=headers, files=f) + try: + data = response.json() + return(data) + except json.decoder.JSONDecodeError: + print("API response contains non-valid JSON data") + #print(response.text) + except requests.exceptions.RequestException as e: + print(f"An error occurred during the API call: {e}") + + def createNewPost(self, ImageID, ImageDescription, ImageAltDescription = ''): + serverurl = self.serverurl() + apiurl = serverurl + "/api/v1/statuses" + + print(apiurl) + + accessToken = self.accesstoken() + headers = { + "Authorization": f"Bearer {accessToken}" + } + data = { + "status": ImageDescription, + "media_ids": [ImageID], + "alt": ImageAltDescription + } + try: + response = requests.post(apiurl, headers=headers, json=data) + try: + responsedata = response.json() + return(responsedata) + except json.decoder.JSONDecodeError: + print("API response contains non-valid JSON data") + #print(response.text) + except requests.exceptions.RequestException as e: + print(f"An error occurred during the API call: {e}")