Your workflow is unique 👨💻 - tell us how you use Dropbox here.
Forum Discussion
DeeG2009
3 years agoExplorer | Level 3
Help with python script uploading images to already created folders
I am looking for some assistance with a script i am trying to get to work to transfer images from a windows server to a dropbox account. For the life of me i cannot get it to stop creating new folder...
Здравко
3 years agoLegendary | Level 20
Hi DeeG2009,
There is a similar question here. You can take some idea out from there. 😉
DeeG2009 wrote:... For the life of me i cannot get it to stop creating new folders. . ...
If the folder you are going to upload to is there, no other will be created. If such a folder is missing, it's gonna created automatic.
Hope this helps.
DeeG2009
3 years agoExplorer | Level 3
from PIL import Image, ImageDraw, ImageFont
import csv
import os
import dropbox
import piexif
# Read configuration from CSV
with open('C:/Program Files/Python310/Scripts/config.csv', 'r') as f:
reader = csv.DictReader(f)
config = next(reader)
# Dropbox access token
access_token = config['access_token']
# Connect to Dropbox
dbx = dropbox.Dropbox(access_token)
# Windows server folder path
windows_server_folder = config['windows_server_folder']
# Dropbox destination folder
destination_folder = config['destination_folder']
# Desired image size
size = tuple(map(int, config['size'].split('x')))
# Text to use as watermark
text = config['text']
# Font and size to use for the watermark text
font = ImageFont.truetype(config['font'], int(config['font_size']))
# List of images in the Windows server folder
images = [f for f in os.listdir(windows_server_folder) if f.endswith(".jpg")]
# Counter for naming images with the same name
counter = 1
# Loop through each image
for image in images:
try:
# Open the image
with Image.open(os.path.join(windows_server_folder, image)) as img:
# Resize the image
img = img.resize(size, resample=Image.LANCZOS)
# Create an ImageDraw object
draw = ImageDraw.Draw(img)
# Get the size of the image
image_width, image_height = img.size
# Get the size of the text
text_width, text_height = draw.textsize(text, font=font)
# Calculate x and y positions for the text
x = (image_width - text_width) / 2
y = (image_height - text_height) / 2
# Draw the text on the image
draw.text((x, y), text, font=font, fill=(255, 255, 255, 128))
# Name the image with SEO keywords
name = f"{config['name_prefix']}{counter}.jpg"
img.save(os.path.join(windows_server_folder, name), quality=75)
counter += 1
except Exception as e:
print(f"Error processing {image}: {e}")
continue
# Modify the EXIF data
try:
exif_dict = {
'GPSLatitudeRef': b'N',
'GPSLatitude': [(float(config['latitude']))],
'GPSLongitudeRef': b'W',
'GPSLongitude': [(float(config['longitude']))],
}
exif_bytes = piexif.dump(exif_dict)
piexif.insert(exif_bytes, os.path.join(windows_server_folder, name))
except Exception as e:
print(f"Error adding EXIF data to {name}: {e}")
continue
# Upload the image to Dropbox
try:
with open(os.path.join(windows_server_folder, name), "rb") as f:
dbx.files_upload(f.read(), os.path.join(destination_folder, name))
except Exception as e:
print(f"Error uploading {name} to Dropbox: {e}")
continue
# Remove the original image from the Windows server folder
try:
os.remove(os.path.join(windows_server_folder, image))
except Exception as e:
print(f"Error removing {image} from Windows server: {e}")
continue
print(f"{image} resized, watermarked, Geo Tagged, Keyword Embedded and uploaded successfully.")
This is what i am currently running, but like i said it always creates a new folder instead of uploading to the existing folder. maybe i am not getting the path to the folder in dropbox right?
About Discuss Dropbox Developer and API
Explore Dropbox Developer & API discussions with developers like you.
The Dropbox Community team is active from Monday to Friday. We try to respond to you as soon as we can, usually within 2 hours.
If you need more help you can view your support options (expected response time for an email or ticket is 24 hours), or contact us on X, Facebook or Instagram.
For more info on available support options for your Dropbox plan, see this article.
If you found the answer to your question in this Community thread, please 'like' the post to say thanks and to let us know it was useful!