Successfully auths and uploads to Flickr

This commit is contained in:
Fred Boniface 2023-11-05 14:22:32 +00:00
parent 1950ffc54a
commit b2edd16356
5 changed files with 82 additions and 16 deletions

View File

@ -1,6 +1,7 @@
import pyexiv2 import pyexiv2
def get_image_data(path: str): def get_image_data(path: str):
print(f"Opening file: {path}")
img = pyexiv2.Image(path) img = pyexiv2.Image(path)
xmp = img.read_xmp() xmp = img.read_xmp()
create_date = xmp.get('Xmp.xmp.CreateDate', 'N/A') create_date = xmp.get('Xmp.xmp.CreateDate', 'N/A')
@ -18,4 +19,4 @@ def get_image_data(path: str):
'alt': alt_text, 'alt': alt_text,
'tags': tags 'tags': tags
} }
print(image_data) return image_data

7
load_config.py Normal file
View File

@ -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')

50
main.py
View File

@ -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 <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)
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()

View File

@ -1,19 +1,27 @@
import flickrapi import flickrapi
import load_config
api_key = print("Authenticating with Flickr")
api_secret = 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): def prepareTags(input_list: list):
flickr.upload( output_list = []
filename = file_data.path, for item in input_list:
title = file_data.title, if ' ' in item:
description = file_data.description, output_list.append(f"'{item}'")
tags = file_data.tags.join(" "), else:
is_public = 1, output_list.append(item)
format = rest return ' '.join(output_list)
)
def prepareTags(tags: list):
return None

BIN
test_files/_IGP1936_02.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 MiB