import load_config
import image_processing

import os, sys

####
# CURRENT ISSUES
####
#
# Pixelfed API doesn't honour newlines. - Possibly look at HTML formatting?
# Pixelfed publishing is missing date - Needs parsing and appending to description


def main():
    if len(sys.argv) < 2:
        print("Usage: social-photos <directory_or_file_path>")
    else:
        path = sys.argv[1]
        
        if not os.path.exists(path):
            print(f"'{path}' does not exist.")
            sys.exit(1)
        elif os.path.isfile(path):
            print(f"'{path}' is a file.")
            files = [path]
        elif os.path.isdir(path):
            print(f"'{path}' is a directory.")
            files = list_files_in_directory(path)
        else:
            print(f"'{path}' is neither a file nor a directory.")
            sys.exit(1)
        
        print("These files will be uploaded:")
        for item in files:
            print(item)
        confirmation = input("Proceed? (y/n): ").strip().lower()
        
        if confirmation != 'y':
            print("Cancelling operation")
            sys.exit(0)

        file_data = []
        for item in files:
            item_data = image_processing.get_image_data(item)
            file_data.append(item_data)

        # Collection of post URL's which can be used for sharing features
        # Where the API used doesn't support responding with a URL, a status
        # message is provided.
        posts = {}

        if load_config.config['flickr']['enable']:
            print("Flickr publishing enabled")
            import publish_flickr
            posts['flickr'] = publish_flickr.upload(file_data)

        if load_config.config['pixelfed']['enable']:
            print("Pixelfed publishing enabled")
            import publish_pixelfed
            posts['pixelfed'] = publish_pixelfed.upload(file_data)

        if load_config.config['boost_mastodon']['enable']:
            print("Mastodon Boost enabled")
            import boost_mastodon
            # TESTING CALL:
            boost_mastodon.boost("e")
            #posts['mastodon_boost'] = boost_mastodon.boost(posts['pixelfed'])
        
def list_files_in_directory(directory):
    top_level_items = os.listdir(directory)
    full_paths = [os.path.join(directory, item) for item in top_level_items]
    return full_paths

if __name__ == "__main__":
    main()