#!/usr/bin/env python3

#Commands:
#r = start recording
#p = take picture
#0-8 = ISO modes 100-800, 0 is auto
#a = auto exposure
#n = night exposure
#+ = Start preview
#- = Stop preview


#Exposure Modes:
#- off
#- auto
#- night
#- nightpreview
#- backlight
#- spotlight
#- sports
#- snow
#- beach
#- verylong
#- fixedfps
#- antishake
#- fireworks

#White Balance Modes:
#- off
#- auto
#- sunlight
#- cloudy
#- shade
#- tungsten
#- flourescent
#- incandescent
#- flash
#- horizon

#ISO Modes:
#0 = Auto
#1 = ISO 100
#2 = ISO 200
#4 = ISO 400
#8 = ISO 800

import time
import keyboard
from time import sleep
from picamera import PiCamera

camera = PiCamera()
camera.resolution = (1920, 1080)
camera.exposure_mode = 'auto'
camera.awb_mode = 'auto'
camera.iso = 0
camera.start_preview()

print("PiCorder V1.6")

def photo_12mp():
	print("Saving Photo")
	camera.resolution = (2592, 1944)
	sleep(2)
	camera.capture('/home/pi/Documents/test_files/testpic.png')
	print("Photo Saved")
	camera.resolution = (1920, 1080)	
	return	
			
def record_start():
	camera.resolution = (1920, 1080)
	sleep(2)
	#raspivid -t 0 -w 1920 -h 1080 -fps 60 -b 5000000 -o - | ffmpeg -i - -f alsa -ac 1 -i pulse -map 0:0 -map 1:0 -vcodec copy -acodec aac -strict -2 /home/pi/Desktop/test/test.flv
	camera.start_recording('/home/pi/Documents/test_files/button.h264')
	#camera.start_recording('| ffmpeg -i - -f alsa -ac 1 -i pulse -map 0:0 -map 1:0 -vcodec copy -acodec aac -strict -2 /home/pi/Desktop/test/test.flv')
	print("Recording Started")
	while True:
		
		if keyboard.is_pressed('1'):
			preview_stop()
		
		if keyboard.is_pressed('2'):
			print("Stop Requested")
			record_stop()
			time.sleep(.125)
			break		
		
		if keyboard.is_pressed('3'):
			preview_start()
		
		if keyboard.is_pressed('4'):
			exp_night()	
		
		if keyboard.is_pressed('5'):
			exp_auto()
		
			
		if keyboard.is_pressed('6'):
			exp_antishake()		
		
		if keyboard.is_pressed('7'):
			iso_100()
			
		if keyboard.is_pressed('8'):
			iso_auto()				
			
		if keyboard.is_pressed('9'):
			iso_800()	
			
		if keyboard.is_pressed('0'):
			photo_12mp()
			
		if keyboard.is_pressed('x'):
			camera.stop_preview()
			camera.close()
			print("Killing Program")
			time.sleep(2)
			break	
		
def record_stop():
	camera.stop_recording()
	print("Recording Stopped")
	
	
def end():
	camera.stop_preview()
	close()
	print("Killing Program")
	
def exp_night():
	camera.exposure_mode = "night"
	print("Night")
	time.sleep(.125)
	
def exp_antishake():
	camera.exposure_mode = "antishake"
	print("Antishake")
	time.sleep(.125)
	
def exp_auto():
	camera.exposure_mode = "auto"
	print("Auto")
	time.sleep(.125)
	
def exp_sports():
	camera.exposure_mode = 'sports'
	print("sports")
	time.sleep(.125)

def exp_beach():
	camera.exposure_mode = "beach"
	print("Beach")
	time.sleep(.125)

	
def preview_stop():
	camera.stop_preview()
	print("Preview Stopped")
	time.sleep(.125)
	
def preview_start():
	camera.start_preview()
	print("Preview Started")
	time.sleep(.125)
	
def iso_auto():
	camera.iso = 0
	print("ISO Auto")
	time.sleep(.125)	
	
def iso_100():
	camera.iso = 100
	print("ISO 100")
	time.sleep(.125)
	
def iso_200():
	camera.iso = 200
	print("ISO 200")
	time.sleep(.125)

def iso_400():
	camera.iso = 400
	print("ISO 400")
	time.sleep(.125)
	
def iso_800():
	camera.iso = 800
	print("ISO 800")
	time.sleep(.125)
	
while True:
	try:
		if keyboard.is_pressed('1'):
			preview_stop()
		
		if keyboard.is_pressed('2'):
			record_start()		
		
		if keyboard.is_pressed('3'):
			preview_start()
		
		if keyboard.is_pressed('4'):
			exp_night()	
		
		if keyboard.is_pressed('5'):
			exp_auto()
		
			
		if keyboard.is_pressed('6'):
			exp_antishake()		
		
		if keyboard.is_pressed('7'):
			iso_100()
			
		if keyboard.is_pressed('8'):
			iso_auto()				
			
		if keyboard.is_pressed('9'):
			iso_800()	
			
		if keyboard.is_pressed('0'):
			photo_12mp()	
			
		if keyboard.is_pressed('x'):
			camera.stop_preview()
			camera.close()
			print("Killing Program")
			time.sleep(2)
			break		
		
			
	except:
		pass
