import load_config from mastodon import Mastodon import datetime, pytz m = Mastodon(access_token=load_config.config['pixelfed']['token'], api_base_url=load_config.config['pixelfed']['server']) def upload(file_data: list): for file in file_data: print("Uploading image to Pixelfed") media_upload = m.media_post(file['path'], description=file['alt']) print("Posting to Pixelfed") post_upload = m.status_post(formatPost(file), media_ids = media_upload['id'], visibility="public") print(post_upload) return post_upload['url'] def formatPost(file: dict): tag_string = formatTags(file['tags']) if load_config.config['pixelfed']['add_to_description']: file['description'] = file['description'] + load_config.config['pixelfed']['add_to_description'] return f"{file['title']} | {formatDate(file['create'])} \n {file['description']} \n {tag_string}" def formatTags(tags: list): formatted_tags = ['#' + tag.title().replace(' ', '') for tag in tags] formatted_tags_str = ' '.join(formatted_tags) return formatted_tags_str def formatDate(input_date_str: str): input_datetime = datetime.datetime.fromisoformat(input_date_str) london_tz = pytz.timezone('Europe/London') london_datetime = input_datetime.replace(tzinfo=pytz.utc).astimezone(london_tz) output = london_datetime.strftime("%d/%m/%Y") print(output) return output