#!/usr/bin/env python3 import pathlib import random import logging import getpass import sys import gnusocial as gs import gnusocial.media import gnusocial.statuses logging.basicConfig(level=logging.DEBUG) SERVER_URL = 'https://shitposter.club' USERNAME = 'cow2001' PASSWORD = '' SOURCE_IMAGE_DIRECTORY = pathlib.Path('source_directory').absolute() SINK_IMAGE_DIRECTORY = pathlib.Path('sink_directory').absolute() STATUS = "An image." def get_random_image_path(source_image_directory): return random.choice(list(source_image_directory.glob('*'))).absolute() def upload_image(image_absolute_path, server_url, username, password, ): with image_absolute_path.open('rb') as image_file: return gs.media.upload(server_url=server_url, media=image_file, username=username, password=password, ) def move_image(image_path, sink_image_directory, ): image_path.rename(sink_image_directory.joinpath(image_path.name)) def update_status(#image_absolute_path, server_url, status, username, password, media_ids ): result = gs.statuses.update(server_url=server_url, username=username, password=password, status=status, media_ids=media_ids, ) return result def main(server_url, username, password, source_image_directory, sink_image_directory, status, ): random_image_absolute_path = get_random_image_path(source_image_directory) upload_response = upload_image(image_absolute_path=random_image_absolute_path, server_url=server_url, username=username, password=password, ) media_ids = [upload_response['media_id']] update_status_response = update_status( server_url=server_url, status=status, username=username, password=password, media_ids=media_ids, ) logging.debug(str(update_status_response)) move_image(random_image_absolute_path, sink_image_directory=sink_image_directory) if __name__ == '__main__': actual_password = PASSWORD if PASSWORD != '' else getpass.getpass() main(server_url=SERVER_URL, username=USERNAME, password=actual_password, sink_image_directory=SINK_IMAGE_DIRECTORY, source_image_directory=SOURCE_IMAGE_DIRECTORY, status=STATUS )