This program can now handle mounting and unmounting the SD card on /mnt/SD (you will have to make that dir with root privileges)
#time setup import time #GPIO setup import RPi.GPIO as GPIO GPIO.setmode(GPIO.BOARD) in_left = 11 GPIO.setup(in_left, GPIO.IN) in_right = 13 GPIO.setup(in_right, GPIO.IN) button = 16 GPIO.setup(button, GPIO.IN) flickr_LED = 3 GPIO.setup(flickr_LED, GPIO.OUT) both_LED = 5 GPIO.setup(both_LED, GPIO.OUT) hdd_LED = 7 GPIO.setup(hdd_LED, GPIO.OUT) uploading_LED = 26 GPIO.setup(uploading_LED, GPIO.OUT) ready_LED = 24 GPIO.setup(ready_LED, GPIO.OUT) stat_LED = 22 GPIO.setup(stat_LED, GPIO.OUT) #for the cp command import os import os.path #setup for datestamping folders import time #Flickr Setup import flickrapi api_key = api_secret = flickr = flickrapi.FlickrAPI(api_key, api_secret, format='json') (token, frob) = flickr.get_token_part_one(perms='write') if not token: raw_input("Press ENTER after you authorized this program") flickr.get_token_part_two((token, frob)) #Storage Locations sdcard = '/mnt/SD' destination = '/media/usb0/' #these functions will be filled later, but right now it's just a simple led blink def flickr_upload(): print "Uploading Photos To Flickr" flickr_number = 0 flickr_upload_list = [] for path, subdirs, files in os.walk(sdcard): for filename in files: listfiles = os.path.join(path, filename) upload_response = flickr.upload(filename = listfiles, format='etree') upload_ID = upload_response.find('photoid').text flickr_upload_list.insert(flickr_number,upload_ID) print 'Photo ' + str(flickr_number) + ' uploaded' + ' ID: ' + upload_ID + ' : ' + str(flickr_upload_list[flickr_number]) flickr_number = flickr_number + 1 set_name = 'Uploaded At ' + time.strftime('%m-%d-%y_%H-%M-%S') print 'Creating Set: ' + set_name json_string = flickr.photosets_create(title=set_name, primary_photo_id=flickr_upload_list[0]) set_id = json_string.split('"')[5] print 'Set Created: ' + set_id print 'Adding Files To list' for s in flickr_upload_list: flickr.photosets_addPhoto(photoset_id=set_id, photo_id=s) print 'Photo: ' + s + ' Added To Set: ' + set_id print "Flickr Upload Completed" def hdd_upload(): print "Uploading Photos To the HDD" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) print 'Creating Folder' foldername = time.strftime('%m-%d-%y_%H-%M-%S') os.system('mkdir ' + destination + foldername) print 'Folder Created: ' + destination + foldername hdd_number = 0 for path, subdirs, files in os.walk(sdcard): for filename in files: hdd_number = hdd_number + 1 listfiles = os.path.join(path, filename) print 'Copying File: ' + str(number) + ' ' + listfiles command = 'cp ' + listfiles + ' ' + destination + foldername print command os.system(command) print "HDD Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) time.sleep(2) def both_upload(): print "Uploading Photos To Flickr and the HDD" hdd_upload() flickr_upload() print "Double Upload Completed" while 1: GPIO.output(ready_LED, True) GPIO.output(uploading_LED, False) GPIO.output(stat_LED, False) if GPIO.input(in_left): #print "left" GPIO.output(flickr_LED, True) GPIO.output(both_LED, False) GPIO.output(hdd_LED, False) elif GPIO.input(in_right): #print "right" GPIO.output(flickr_LED, False) GPIO.output(both_LED, False) GPIO.output(hdd_LED, True) else: #print "mid" GPIO.output(flickr_LED, False) GPIO.output(both_LED, True) GPIO.output(hdd_LED, False) if GPIO.input(button): GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) time.sleep(10) os.system('mount -t vfat /dev/sda1/ ' + sdcard) print 'SD Mounted' if GPIO.input(in_left): flickr_upload() time.sleep(10) os.system('umount -t vfat /dev/sda1/ ' + sdcard) print 'SD Unounted' GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) elif GPIO.input(in_right): hdd_upload() time.sleep(10) os.system('umount -t vfat /dev/sda1/ ' + sdcard) print 'SD Unounted' GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) else: both_upload() time.sleep(10) os.system('umount -t vfat /dev/sda1/ ' + sdcard) print 'SD Unounted' GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True)