Fixed non-clashing basename generation

This commit is contained in:
Joel Collins 2018-11-20 13:56:51 +00:00
parent 0e76ae673a
commit 69e97ba5a3
3 changed files with 50 additions and 38 deletions

View file

@ -3,6 +3,7 @@ import time
import io
import threading
from PIL import Image
import datetime
import logging
try:
@ -33,6 +34,11 @@ def entry_by_id(id: str, object_list: list):
return found
def generate_basename():
"""Return a default filename based on the capture datetime"""
return datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
class CameraEvent(object):
"""
A frame-signaller object used by any instances or subclasses of BaseCamera.
@ -222,6 +228,18 @@ class BaseCamera(object):
self.videos,
shunt_others=shunt_others)
# INTELLIGENTLY GENERATE FILENAMES
def generate_basename(self, obj_list: list) -> str:
initial_basename = generate_basename()
basename = initial_basename
# Handle clashing
iterator = 1
while basename in [obj.basename for obj in obj_list]:
basename = initial_basename + "_{}".format(iterator)
iterator += 1
return basename
# WORKER THREAD
def _thread(self):