diff --git a/aeonview.py b/aeonview.py index 896ac75..3959ed3 100755 --- a/aeonview.py +++ b/aeonview.py @@ -20,14 +20,14 @@ def aeonview(argv): "Defaults to 5 characters from md5 hash of the webcam url.", type="string" ) basicopts.add_option( '-d', '--destination', - help="Start of the path. Optional, defaults to: .", + help="Start of the path. [default: %default]", type="string", default=".", dest="path" ) parser.add_option_group(basicopts) # When mode is: image - imageopts = optparse.OptionGroup(parser, "Options for mode 'image'", + imageopts = optparse.OptionGroup(parser, "Options for --mode: image", "When we are gathering images.") imageopts.add_option( '-u', '--url', help="Webcam URL", @@ -36,7 +36,7 @@ def aeonview(argv): # When mode is: video - videoopts = optparse.OptionGroup(parser, "Options for mode 'video'", + videoopts = optparse.OptionGroup(parser, "Options for --mode: video", "When we are making movies.") videoopts.add_option( '-g', '--generate', help="Date to video. Format: YYYY-MM-DD. " @@ -47,9 +47,9 @@ def aeonview(argv): default="daily", help="Video to process: daily or monthly [default: %default]", type="string") - videoopts.add_option( '-f', '--faster', + videoopts.add_option( '-f', '--fps', default="10", - help="Multiplier of video speed, numeric [default: %default]", + help="Frames per second, numeric [default: %default]", type="int") parser.add_option_group(videoopts) @@ -72,43 +72,44 @@ def aeonview(argv): print print "(!) You are running aeonview from", os.getcwdu(), "as the user", os.getlogin() + if options.mode == 'image': # We are now in the gathering mode. if options.url == None and options.simulate == True: options.url = "http://example.com/webcam.jpg" print "(!) Simulation: Using " + options.url + " as webcam url" - + if options.url == None: print "(!) Need a webcam url, not gonna rock before that!" print parser.print_help() sys.exit(-1) - + if options.project == None: import hashlib # not needed before m = hashlib.md5(options.url).hexdigest() options.project = m[:5] # 5 first characters of md5-hash if options.verbose == True or options.simulate == True: print "(!) No project defined, using part of md5-hash of the webcam url:", options.project - + if options.path == None or options.path == ".": if options.verbose == True or options.simulate == True: print "(!) No destination defined, using:", options.path else: if options.verbose == True or options.simulate == True: print "(!) Using destination:", options.path - + # If you want to change the path structure, here's your chance. options.imgpath = time.strftime("/img/%Y-%m/%d/") options.imgname = time.strftime("%H-%M-%S") - - # Let's rock + + # Let us build the destination path and filename options.fileext = os.path.splitext(options.url)[1] options.destdir = options.path + "/" + options.project + options.imgpath options.destination = options.destdir + options.imgname + options.fileext getit = options.url + " > " + options.destination - + # Crude, but works. if options.simulate == False: mkdir_p( options.destdir ) @@ -117,40 +118,41 @@ def aeonview(argv): print "(!) Simulation: Making path:", options.destdir print "(!) Simulation: curl", getit #print options - - + elif options.mode == 'video': - - if options.faster < 1: - options.faster = 1 # Never gonna let you multiply by zero. - # We are now in the video producing mode - videofps = options.faster * 25 # = 25fps * multiplier + vid_extension = ".avi" - mencoder = os.getcwd() + "/mencoder" - mencoder = mencoder + " -mf fps="+vidfps+" -nosound -ovc lavc -lavcopts vcodec=mpeg4" + m = os.getcwd() + "/mencoder" + mencoder = m + " -mf fps="+ str(options.fps) +" -nosound -ovc lavc -lavcopts vcodec=mpeg4" if options.project == None: print "(!) No project defined, please specify what project you are working on." print parser.print_help() sys.exit(-1) - + if options.videorun == "daily": - #options.generate = "2010-13-01" - vid_date = str(options.generate).split( "-" ) year = vid_date[0] month = vid_date[1] day = vid_date[2] if check_date(int(year), int(month), int(day)): - video_dir = options.path + "/" + options.project + "/vid/" + year + "-" + month + "/" + day + "/*" - print "Video dir to process:", video_dir - video_out_day = options.path + "/" + options.project + "/vid/" + year + "-" + month + "/" + day + vid_extension - print "Video output-file: ", video_out_day - print mencoder, "-o", video_out_day, "'mf://"+os.path.dirname( os.path.realpath( video_dir ) ) + "/*'" + video_dir = options.path+"/"+options.project+"/img/"+year+"-"+month+"/"+day+"/*" + video_out_dir = options.path +"/"+ options.project +"/vid/"+ year +"-"+ month +"/" + video_out_day = video_out_dir + day + vid_extension + command = mencoder + " -o " + video_out_day + " 'mf://"+os.path.dirname( os.path.realpath( video_dir ) ) + "/*'" + + if options.simulate == False: + mkdir_p( video_out_dir ) + os.system(command) + else: + print "(!) Video dir to process:", video_dir + print "(!) Video output-file: ", video_out_day + print "(!) Command to run", command + else: print "(!) Error: check your date. Value provided:", options.generate @@ -158,9 +160,7 @@ def aeonview(argv): print "Monthly" else: - pass - - pass + print "(!) What? Please choose between -r daily/montly" else: parser.print_help()