Added capture state endpoint

This commit is contained in:
Joel Collins 2018-11-12 12:22:06 +00:00
parent 52d667feec
commit 4e67d24841
7 changed files with 151 additions and 34 deletions

View file

@ -10,6 +10,7 @@ class StreamObject(object):
def __init__(
self,
write_to_file: bool=None,
keep_on_disk: bool=True,
filename: str=None,
folder: str=None,
fmt: str='file') -> None:
@ -20,17 +21,18 @@ class StreamObject(object):
# Create file name
iterator = 0
f_name = self.build_file_path(filename, folder, fmt)
f_path, f_name = self.build_file_path(filename, folder, fmt)
while os.path.isfile(f_name): # While file already exists
iterator += 1 # Add a file name iterator
f_name = self.build_file_path(
filename,
folder,
fmt,
f_path, f_name = self.build_file_path(
filename,
folder,
fmt,
iterator=iterator) # Rebuild file name
self.file = f_name
self.file = f_path
self.filename = f_name
# Byte stream properties
self.stream = io.BytesIO() # Byte stream that data will be written to
@ -45,7 +47,7 @@ class StreamObject(object):
self.target = self.file
# Keep on disk after close by default
self.keep_on_disk = True
self.keep_on_disk = keep_on_disk
# Log if created by context manager
self.context_manager = False
@ -95,7 +97,7 @@ class StreamObject(object):
else:
file_path = file_name
return file_path
return (file_path, file_name)
def lock(self):
"""Set locked flag to True."""
@ -138,7 +140,7 @@ class StreamObject(object):
# Get file path
if self.file_exists:
d['file'] = self.file
d['file'] = self.filename
else:
d['file'] = None
@ -148,6 +150,12 @@ class StreamObject(object):
else:
d['stream'] = False
# Combined availability of data
if self.stream_exists or self.file_exists:
d['available'] = True
else:
d['available'] = False
# Check if file was manually deleted
if self.keep_on_disk and not self.file_exists:
d['path'] = "{} (Deleted)".format(d['path'])

View file

@ -318,6 +318,7 @@ class StreamingCamera(BaseCamera):
self,
target=None,
write_to_file: bool=False,
keep_on_disk: bool=True,
use_video_port: bool=False,
filename: str=None,
folder: str='capture',
@ -346,6 +347,7 @@ class StreamingCamera(BaseCamera):
# Create a new image and add to the image list
target_obj = self.new_image(StreamObject(
write_to_file=write_to_file,
keep_on_disk=keep_on_disk,
filename=filename,
folder=folder,
fmt=fmt))