Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import os
- import subprocess
- import sys
- import time
- import glob
- import re
- frame_num_regex = re.compile(r'IMG_(\d+)\.')
- jpeg_frame_numbers = list(int(frame_num_regex.search(f).group(1)) for f in glob.glob('images/jpeg/IMG_*.*'))
- raw_frame_numbers = list(int(frame_num_regex.search(f).group(1)) for f in glob.glob('images/raw/IMG_*.*'))
- jpeg_frame_num = 1
- raw_frame_num = 1
- if jpeg_frame_numbers:
- jpeg_frame_num = max(jpeg_frame_numbers) + 1
- if raw_frame_numbers:
- raw_frame_num = max(raw_frame_numbers) + 1
- jpeg_info_file = open('images/jpeg/info.txt', 'a')
- raw_info_file = open('images/raw/info.txt', 'a')
- def get_new_data(file):
- last_file_pointer = 0
- while True:
- file.seek(last_file_pointer)
- data = []
- for line in file:
- data.append(line)
- yield ''.join(data)
- last_file_pointer = file.tell()
- proc = subprocess.Popen('chdkptp.exe -i -c', stdin=subprocess.PIPE)
- stdout_file = open('stdout.txt', 'r')
- stdout = get_new_data(stdout_file)
- time.sleep(1)
- print stdout.next()
- def run_command(command, delay):
- print command
- proc.stdin.write('%s\n' % command)
- proc.stdin.flush()
- time.sleep(delay)
- result = stdout.next()
- print result
- return result
- print run_command('reboot\n', 10)
- print run_command('connect\n', 2)
- print run_command('luar switch_mode_usb(1);\n', 10)
- # Camera Dials
- # Mode Dial to Manual
- # EV offset to 0
- # ISO to 80
- # Camera Settings
- # Mute On
- # Power Save Off
- # Settings Menu
- # Focus Bracketing Off
- # Multiple Shots Off
- print run_command('luar ' +
- # menu update script
- 'click("menu"); sleep(2000); ' + # open up the menu
- # shooting settings
- 'click("down"); sleep(500); ' + # skip over af frame
- 'if get_prop(299) == 0 then click("down"); sleep(500); end; ' + # skip over af-point zoom
- 'click("down"); sleep(500); if get_prop(299)==1 then click("right"); sleep(500); end; ' + # set servo af off 0
- 'click("down"); sleep(500); if get_prop(12)==1 then click("right"); sleep(500); end; ' + # set continuous af off 0
- 'click("down"); sleep(500); if get_prop(5)==1 then click("right"); sleep(500); end; ' + # set af-assist beam off 0
- 'click("down"); sleep(500); ' + # skip over mf-point zoom
- 'click("down"); sleep(500); if get_prop(283)==1 then click("right"); sleep(500); end; ' + # set safety mf off 0
- 'click("down"); sleep(500); click("right"); ' + # enter flash control menu
- 'while get_prop(141) ~= 2 do click("right"); sleep(500); end; ' + # sets flash output to max 2
- 'click("down"); sleep(500); if get_prop(64)==1 then click("right"); sleep(500); end; ' + # set shutter sync to first curtain 0
- 'click("down"); sleep(500); if get_prop(217)==1 then click("right"); sleep(500); end; ' + # set red-eye lamp to off 0
- 'click("menu"); sleep(500); ' + # return from flash control menu
- 'click("down"); sleep(500); ' + # skip spot ae point
- 'click("down"); sleep(500); ' + # skip review
- 'click("down"); sleep(500); ' + # skip review-info
- 'click("down"); sleep(500); if get_prop(310)==1 then click("right"); sleep(500); end; ' + # set blink detection to off 0
- 'click("down"); sleep(500); ' + # skip custom display
- 'click("down"); sleep(500); ' + # skip reverse display no propcase
- 'click("down"); sleep(500); while get_prop(145) ~= 4 do click("right"); sleep(500); end; ' + # sets image stabalization mode to off 4 (continuous, ?, shoot only, panning, off)
- 'click("down"); sleep(500); while get_prop(60) ~= 0 do click("right"); sleep(500); end; ' + # sets converter to none 0
- 'click("down"); sleep(500); ' + # skip set func display
- 'click("down"); sleep(500); ' + # skip set shortcut button display
- 'click("down"); sleep(500); ' + # skip save settings display
- 'click("down"); sleep(500); ' + # return to top of menu
- # camera settings
- 'click("right"); sleep(500); ' + # enter camera settings
- 'click("down"); sleep(500); click("right"); sleep(500); ' + # can't set mute to on 1 (as it defaults to off)
- # end menu update script
- 'click("menu"); sleep(2000); ' + # close the menu
- # settings update script
- 'click("set"); sleep(2000); ' + # open up the settings
- 'while get_prop(273) ~= 888 do click("right"); sleep(500); end; ' + # set white balance to flash 888
- 'click("down"); sleep(500); ' + # can't set focus bracket off no propcase
- 'click("down"); sleep(500); ' + # can't set to single shot mode no propcase
- 'click("down"); sleep(500); while get_prop(141) ~= 2 do click("right"); sleep(500); end; ' + # set flash output to max 2
- 'click("down"); sleep(500); if get_prop(196) == 1 then click("right"); sleep(500); end; ' + # set nd filter to off 0
- 'if get_prop(214) ~= 0 then click("down"); sleep(500); end; ' + # skip aspect ratio if we are in raw and jpeg so we can goto set the raw and jpeg setting then we'll come back
- 'click("down"); sleep(500); while get_prop(214) ~= 2 do click("right"); sleep(1000); end; ' + # set raw and jpeg to both on 2 (raw, jpeg, raw and jpeg)
- 'click("up"); sleep(500); while get_prop(300) ~= 0 do click("right"); sleep(500); end; ' + # set aspect ratio to 4:3 0 (4:3, 16:9, 3:2, 1:1, 4:5)
- 'click("down"); sleep(500); click("down"); sleep(500); while get_prop(222) ~= 0 do click("right"); sleep(500); end; ' + # set file size to L 0 (L, M1, M2, ?, S)
- 'click("down"); sleep(500); ' + # return to top of menu
- # end settings menu update script
- 'click("set"); sleep(2000); ' + # close up the settings
- # general stuff
- 'while get_prop(143) ~= 1 do click("right"); sleep(3000); end; ' + # sets flash mode to on 1
- 'if get_prop(6) == 1 then click("left") sleep(3000); end; ' + # sets macro mode to off 0
- 'if get_prop(133) == 0 then click("up") sleep(3000); end; ' + # sets manual focus mode to off 0
- 'while get_prop(227) ~= 0 do click("down"); sleep(3000) end; ' + # sets timer mode to off 0
- 'set_zoom(7); sleep(5000); ' + # zoom to proper depth 7
- 'sleep(1000); set_backlight(0);\n', 80)
- while True:
- folders_before = set(run_command('ls DCIM', 1).splitlines()[1:-1])
- current_folder_before = max(folder[:-1] for folder in folders_before if folder != 'CANONMSC/')
- files_before = set(run_command('ls DCIM/%s' % current_folder_before, 1).splitlines()[1:-1])
- photo_datetime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
- run_command('luar ' +
- 'set_av96_direct(472); ' + # set the av to 96*log2(a^2) 2.8=>285 OR 8.0=>576 OR 5.5=>472 OR 6.5=>519 OR 6.2=>505 OR 6.0=>496
- 'set_tv96_direct(1053); ' + # set the exposure to 1/2000=>1053 by 96*log2(1/t) OR 1/1000=>957 OR 1/200=>734 OR 1/50=>542
- 'sleep(500); ' + # a little pause for good measure
- 'press("shoot_half"); sleep(2000); set_focus(1000); sleep(4000); ' + # set manual focus mode and focus to 1000 mm
- 'click("shoot_full"); sleep(4000); release("shoot_half"); sleep(2000); set_backlight(0);', 30)
- folders_after = set(run_command('ls DCIM', 1).splitlines()[1:-1])
- current_folder_after = max(folder[:-1] for folder in folders_after if folder != 'CANONMSC/')
- if current_folder_before != current_folder_after:
- files_before = set()
- files_after = set(run_command('ls DCIM/%s' % current_folder_after, 1).splitlines()[1:-1])
- for new_file in files_after.difference(files_before):
- if new_file.endswith('.JPG'):
- run_command('download A/DCIM/104___09/%s images/jpeg/IMG_%06i.%s' % (new_file, jpeg_frame_num, new_file[-3:]), 5)
- jpeg_info_file.write('%06i\t%s\n' % (jpeg_frame_num, photo_datetime))
- jpeg_info_file.flush()
- jpeg_frame_num += 1
- elif new_file.endswith('.CR2'):
- run_command('download A/DCIM/104___09/%s images/raw/IMG_%06i.%s' % (new_file, raw_frame_num, new_file[-3:]), 20)
- raw_info_file.write('%06i\t%s\n' % (raw_frame_num, photo_datetime))
- raw_info_file.flush()
- raw_frame_num += 1
- run_command('luar os.remove("A/DCIM/104___09/%s");' % new_file, 2)
- time.sleep(300)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement