def make_message(subject, message, camera_id, moment, timespan, callback): camera_config = config.get_camera(camera_id) # we must start the IO loop for the media list subprocess polling io_loop = IOLoop.instance() def on_media_files(media_files): io_loop.stop() timestamp = time.mktime(moment.timetuple()) if media_files: logging.debug('got media files') media_files = [ m for m in media_files if abs(m['timestamp'] - timestamp) < timespan ] # filter out non-recent media files media_files.sort(key=lambda m: m['timestamp'], reverse=True) media_files = [ os.path.join(camera_config['target_dir'], re.sub('^/', '', m['path'])) for m in media_files ] logging.debug('selected %d pictures' % len(media_files)) format_dict = { 'camera': camera_config['@name'], 'hostname': socket.gethostname(), 'moment': moment.strftime('%Y-%m-%d %H:%M:%S'), } if settings.LOCAL_TIME_FILE: format_dict['timezone'] = tzctl.get_time_zone() else: format_dict['timezone'] = 'local time' m = message % format_dict s = subject % format_dict s = s.replace('\n', ' ') m += '\n\n' m += 'motionEye.' callback(s, m, media_files) if not timespan: return on_media_files([]) logging.debug('waiting for pictures to be taken') time.sleep(timespan) # give motion some time to create motion pictures logging.debug('creating email message') mediafiles.list_media(camera_config, media_type='picture', callback=on_media_files) io_loop.start()
def make_message(subject, message, camera_id, moment, timespan, callback): camera_config = config.get_camera(camera_id) # we must start the IO loop for the media list subprocess polling io_loop = IOLoop.instance() def on_media_files(media_files): io_loop.stop() timestamp = time.mktime(moment.timetuple()) if media_files: logging.debug('got media files') media_files = [m for m in media_files if abs(m['timestamp'] - timestamp) < timespan] # filter out non-recent media files media_files.sort(key=lambda m: m['timestamp'], reverse=True) media_files = [os.path.join(camera_config['target_dir'], re.sub('^/', '', m['path'])) for m in media_files] logging.debug('selected %d pictures' % len(media_files)) format_dict = { 'camera': camera_config['@name'], 'hostname': socket.gethostname(), 'moment': moment.strftime('%Y-%m-%d %H:%M:%S'), } if settings.LOCAL_TIME_FILE: format_dict['timezone'] = tzctl.get_time_zone() else: format_dict['timezone'] = 'local time' m = message % format_dict s = subject % format_dict s = s.replace('\n', ' ') m += '\n\n' m += 'motionEye.' callback(s, m, media_files) if not timespan: return on_media_files([]) logging.debug('waiting for pictures to be taken') time.sleep(timespan) # give motion some time to create motion pictures logging.debug('creating email message') mediafiles.list_media(camera_config, media_type='picture', callback=on_media_files) io_loop.start()
def make_message(subject, message, camera_id, moment, timespan, callback): camera_config = config.get_camera(camera_id) def on_media_files(media_files): timestamp = time.mktime(moment.timetuple()) media_files = [m for m in media_files if abs(m['timestamp'] - timestamp) < timespan] # filter out non-recent media files media_files.sort(key=lambda m: m['timestamp'], reverse=True) media_files = [os.path.join(camera_config['target_dir'], re.sub('^/', '', m['path'])) for m in media_files] format_dict = { 'camera': camera_config['@name'], 'hostname': socket.gethostname(), 'moment': moment.strftime('%Y-%m-%d %H:%M:%S'), } if settings.LOCAL_TIME_FILE: format_dict['timezone'] = tzctl._get_time_zone() else: format_dict['timezone'] = 'local time' m = message % format_dict s = subject % format_dict s = s.replace('\n', ' ') m += '\n\n' m += 'motionEye.' callback(s, m, media_files) if not timespan: return on_media_files([]) time.sleep(timespan) # give motion some time to create motion pictures mediafiles.list_media(camera_config, media_type='picture', callback=on_media_files)
def make_message(message, camera_id, moment, timespan, callback): camera_config = config.get_camera(camera_id) # we must start the IO loop for the media list subprocess polling io_loop = IOLoop.instance() def on_media_files(media_files): io_loop.stop() photos = [] timestamp = time.mktime(moment.timetuple()) if media_files: logging.debug('got media files') media_files = [ m for m in media_files if abs(m['timestamp'] - timestamp) < float(timespan) ] media_files.sort(key=lambda m: m['timestamp'], reverse=True) media_files = [ os.path.join(camera_config['target_dir'], re.sub('^/', '', m['path'])) for m in media_files ] logging.debug('selected %d pictures' % len(media_files)) format_dict = { 'camera': camera_config['camera_name'], 'hostname': socket.gethostname(), 'moment': moment.strftime('%Y-%m-%d %H:%M:%S'), } if settings.LOCAL_TIME_FILE: format_dict['timezone'] = tzctl.get_time_zone() else: format_dict['timezone'] = 'local time' logging.debug('creating email message') m = message % format_dict callback(m, media_files) if not timespan: return on_media_files([]) logging.debug('waiting for pictures to be taken') time.sleep( float(timespan)) # give motion some time to create motion pictures prefix = None picture_filename = camera_config.get('picture_filename') snapshot_filename = camera_config.get('snapshot_filename') if ((picture_filename or snapshot_filename) and not picture_filename or picture_filename.startswith('%Y-%m-%d/') and not snapshot_filename or snapshot_filename.startswith('%Y-%m-%d/')): moment = datetime.datetime.strptime(moment, '%Y-%m-%dT%H:%M:%S') prefix = moment.strftime('%Y-%m-%d') logging.debug('narrowing down still images path lookup to %s' % prefix) mediafiles.list_media(camera_config, media_type='picture', prefix=prefix, callback=on_media_files) io_loop.start()