diff --git a/image_processing.py b/image_processing.py index 94a56bf..d89715d 100644 --- a/image_processing.py +++ b/image_processing.py @@ -1,6 +1,7 @@ import pyexiv2 def get_image_data(path: str): + print(f"Opening file: {path}") img = pyexiv2.Image(path) xmp = img.read_xmp() create_date = xmp.get('Xmp.xmp.CreateDate', 'N/A') @@ -18,4 +19,4 @@ def get_image_data(path: str): 'alt': alt_text, 'tags': tags } - print(image_data) + return image_data diff --git a/load_config.py b/load_config.py new file mode 100644 index 0000000..211e1a6 --- /dev/null +++ b/load_config.py @@ -0,0 +1,7 @@ +import os +from dotenv import load_dotenv + +load_dotenv() + +flickr_key = os.getenv('FLICKR_KEY') +flickr_secret = os.getenv('FLICKR_SECRET') \ No newline at end of file diff --git a/main.py b/main.py index e69de29..0e01f52 100644 --- a/main.py +++ b/main.py @@ -0,0 +1,50 @@ +import load_config +import image_processing +import load_config +import publish_flickr + +import os, sys + +def main(): + if len(sys.argv) < 2: + print("Usage: social-photos ") + 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) + + print(file_data) + publish_flickr.upload(file_data) + +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() \ No newline at end of file diff --git a/publish_flickr.py b/publish_flickr.py index fb35711..0840ba0 100644 --- a/publish_flickr.py +++ b/publish_flickr.py @@ -1,19 +1,27 @@ import flickrapi +import load_config -api_key = -api_secret = +print("Authenticating with Flickr") +flickr = flickrapi.FlickrAPI(load_config.flickr_key, load_config.flickr_secret) +flickr.authenticate_via_browser(perms='write') -flickr = flickrapi.FlickrAPI(api_key, api_secret) +def upload(file_data: list): + for file in file_data: + print(file) + flickr.upload( + filename = file['path'], + title = file['title'], + description = file['description'], + tags = prepareTags(file['tags']), + is_public = 1, + format = 'rest' + ) -def upload(file_data: dict): - flickr.upload( - filename = file_data.path, - title = file_data.title, - description = file_data.description, - tags = file_data.tags.join(" "), - is_public = 1, - format = rest - ) - -def prepareTags(tags: list): - return None \ No newline at end of file +def prepareTags(input_list: list): + output_list = [] + for item in input_list: + if ' ' in item: + output_list.append(f"'{item}'") + else: + output_list.append(item) + return ' '.join(output_list) \ No newline at end of file diff --git a/test_files/_IGP1936_02.jpg b/test_files/_IGP1936_02.jpg new file mode 100644 index 0000000..8f68c3f Binary files /dev/null and b/test_files/_IGP1936_02.jpg differ