Here’s a video!
So half of the core functionality of the device is done! It’s a pretty simple solution to walk through all of the files in the directory. I actually might check if having sub-folders will mess the process up and it probably will, if that’s the case I’ll try and publish a fix for later tonight.
Anyway’s here’s the source:
#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 #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)) #these functions will be filled later, but right now it's just a simple led blink def flickr_upload(): print "Uploading Photos To Flickr" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) print "Flickr Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) def hdd_upload(): print "Uploading Photos To the HDD" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) folder = time.strftime('%m-%d-%Y_%H-%M-%S') print "Creating Directory for Copy" os.system('mkdir ' + '/media/usb0/' + folder) print 'Folder Created: ' + folder for filename in os.listdir('/media/usb1'): GPIO.output(stat_LED, True) print 'Copying File: ' + filename GPIO.output(stat_LED, False) os.system('cp /media/usb1/' + filename + ' /media/usb0/' + folder + '/') print "HDD Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) def both_upload(): print "Uploading Photos To Flickr and the HDD" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) hdd_upload() flickr_upload() print "Double Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) 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): if GPIO.input(in_left): flickr_upload() elif GPIO.input(in_right): hdd_upload() else: both_upload()
EDIT: So the above code won’t walk through sub-folders on the SD card, here’s an updated source:
#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 = '2bfb7e8be01e5f9f37e2e140076c6efa' api_secret = 'fb4295ce55e7e0dd' 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)) #test = flickr.photosets_create(title="test", primary_photo_id="9253811236") #print test sdcard = '/media/usb0/' destination = '/media/usb1/' #these functions will be filled later, but right now it's just a simple led blink def flickr_upload(): print "Uploading Photos To Flickr" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) print "Flickr Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) 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 number = 0 for path, subdirs, files in os.walk(sdcard): for filename in files: number = 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" GPIO.output(uploading_LED, True) GPIO.output(ready_LED, False) hdd_upload() flickr_upload() print "Double Upload Completed" GPIO.output(uploading_LED, False) GPIO.output(ready_LED, True) 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): if GPIO.input(in_left): flickr_upload() elif GPIO.input(in_right): hdd_upload() else: both_upload()