mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-04-27 17:17:40 +03:00
save and delete thumbnails directly
This commit is contained in:
parent
daccbd9c2b
commit
59358e2598
@ -1539,9 +1539,19 @@ def create_trigger_embedding(
|
||||
|
||||
if body.type == "thumbnail":
|
||||
# Save image to the triggers directory
|
||||
context.save_trigger_thumbnail(
|
||||
camera, body.data, (base64.b64encode(thumbnail).decode("ASCII"))
|
||||
)
|
||||
try:
|
||||
os.makedirs(os.path.join(TRIGGER_DIR, camera), exist_ok=True)
|
||||
with open(
|
||||
os.path.join(TRIGGER_DIR, camera, f"{body.data}.webp"), "wb"
|
||||
) as f:
|
||||
f.write(thumbnail)
|
||||
logger.debug(
|
||||
f"Writing thumbnail for trigger with data {body.data} in {camera}."
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to write thumbnail for trigger with data {body.data} in {camera}: {e}"
|
||||
)
|
||||
|
||||
Trigger.create(
|
||||
camera=camera,
|
||||
@ -1653,7 +1663,15 @@ def update_trigger_embedding(
|
||||
if trigger:
|
||||
# Update existing trigger
|
||||
if trigger.data != body.data: # Delete old thumbnail only if data changes
|
||||
context.delete_trigger_thumbnail(camera, trigger.data)
|
||||
try:
|
||||
os.remove(os.path.join(TRIGGER_DIR, camera, f"{trigger.data}.webp"))
|
||||
logger.debug(
|
||||
f"Deleted thumbnail for trigger with data {trigger.data} in {camera}."
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to delete thumbnail for trigger with data {trigger.data} in {camera}: {e}"
|
||||
)
|
||||
|
||||
Trigger.update(
|
||||
data=body.data,
|
||||
@ -1679,9 +1697,19 @@ def update_trigger_embedding(
|
||||
|
||||
if body.type == "thumbnail":
|
||||
# Save image to the triggers directory
|
||||
context.save_trigger_thumbnail(
|
||||
camera, body.data, (base64.b64encode(thumbnail).decode("ASCII"))
|
||||
)
|
||||
try:
|
||||
os.makedirs(os.path.join(TRIGGER_DIR, camera), exist_ok=True)
|
||||
with open(
|
||||
os.path.join(TRIGGER_DIR, camera, f"{body.data}.webp"), "wb"
|
||||
) as f:
|
||||
f.write(thumbnail)
|
||||
logger.debug(
|
||||
f"Writing thumbnail for trigger with data {body.data} in {camera}."
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to write thumbnail for trigger with data {body.data} in {camera}: {e}"
|
||||
)
|
||||
|
||||
return JSONResponse(
|
||||
content={
|
||||
@ -1736,8 +1764,15 @@ def delete_trigger_embedding(
|
||||
status_code=401,
|
||||
)
|
||||
|
||||
context: EmbeddingsContext = request.app.embeddings
|
||||
context.delete_trigger_thumbnail(camera, trigger.data)
|
||||
try:
|
||||
os.remove(os.path.join(TRIGGER_DIR, camera, f"{trigger.data}.webp"))
|
||||
logger.debug(
|
||||
f"Deleted thumbnail for trigger with data {trigger.data} in {camera}."
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(
|
||||
f"Failed to delete thumbnail for trigger with data {trigger.data} in {camera}: {e}"
|
||||
)
|
||||
|
||||
return JSONResponse(
|
||||
content={
|
||||
|
||||
@ -23,8 +23,6 @@ class EmbeddingsRequestEnum(Enum):
|
||||
embed_thumbnail = "embed_thumbnail"
|
||||
generate_search = "generate_search"
|
||||
reindex = "reindex"
|
||||
write_trigger_thumbnail = "write_trigger_thumbnail"
|
||||
remove_trigger_thumbnail = "remove_trigger_thumbnail"
|
||||
# LPR
|
||||
reprocess_plate = "reprocess_plate"
|
||||
|
||||
|
||||
@ -299,24 +299,3 @@ class EmbeddingsContext:
|
||||
EmbeddingsRequestEnum.embed_thumbnail.value,
|
||||
{"id": str(event_id), "thumbnail": str(thumbnail), "upsert": False},
|
||||
)
|
||||
|
||||
def save_trigger_thumbnail(
|
||||
self, camera: str, event_id: str, thumbnail: bytes
|
||||
) -> None:
|
||||
self.requestor.send_data(
|
||||
EmbeddingsRequestEnum.write_trigger_thumbnail.value,
|
||||
{
|
||||
"camera": str(camera),
|
||||
"event_id": str(event_id),
|
||||
"thumbnail": str(thumbnail),
|
||||
},
|
||||
)
|
||||
|
||||
def delete_trigger_thumbnail(self, camera: str, event_id: str) -> None:
|
||||
self.requestor.send_data(
|
||||
EmbeddingsRequestEnum.remove_trigger_thumbnail.value,
|
||||
{
|
||||
"camera": str(camera),
|
||||
"event_id": str(event_id),
|
||||
},
|
||||
)
|
||||
|
||||
@ -292,17 +292,6 @@ class EmbeddingMaintainer(threading.Thread):
|
||||
elif topic == EmbeddingsRequestEnum.reindex.value:
|
||||
response = self.embeddings.start_reindex()
|
||||
return "started" if response else "in_progress"
|
||||
elif topic == EmbeddingsRequestEnum.write_trigger_thumbnail.value:
|
||||
thumbnail = base64.b64decode(data["thumbnail"])
|
||||
self.embeddings.write_trigger_thumbnail(
|
||||
data["camera"], data["event_id"], thumbnail
|
||||
)
|
||||
return
|
||||
elif topic == EmbeddingsRequestEnum.remove_trigger_thumbnail.value:
|
||||
self.embeddings.remove_trigger_thumbnail(
|
||||
data["camera"], data["event_id"]
|
||||
)
|
||||
return
|
||||
|
||||
processors = [self.realtime_processors, self.post_processors]
|
||||
for processor_list in processors:
|
||||
|
||||
Loading…
Reference in New Issue
Block a user