Need to see if your shared folder is taking up space on your dropbox 👨💻? Find out how to check 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?
- Здравко3 years agoLegendary | Level 20
DeeG2009 wrote:...# Upload the image to Dropboxtry: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... maybe i am not getting the path to the folder in dropbox right?DeeG2009, How the path, you are passing as destination (second argument) to 'files_upload', looks like? 🤔 Don't suppose, check it! Does it match to the expected format?
Again, take a look on 'upload' function in referred thread above. 😉
Good luck.
- Greg-DB3 years ago
Dropbox Community Moderator
[Cross-linking for reference: https://stackoverflow.com/questions/75513737/assistance-with-python-script-uploading-images-to-already-created-folders ]
DeeG2009 As Здравко said, a good way to start troubleshooting this would be to check the actual path value you're using, as that will determine where the file is uploaded. If you still need help, please share that value as well as the output of that files_upload call.
- DeeG20093 years agoExplorer | Level 3
/JD%20Byrd/CPGC/Akron/ - this is where i am sending the images.
this is the folder directory
This is the output from upload to dropbox.
About Discuss Dropbox Developer & API
Make connections with other developers
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!