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