Pi Uploader | Updating Code for Mounting and Mounting Capabilities

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)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.