mirror of
				https://github.com/blakeblackshear/frigate.git
				synced 2025-10-27 10:52:11 +01:00 
			
		
		
		
	* Remove thumbnail from dict * Create thumbnail diectory * Cleanup handling of tracked object images * Make thumbnail optional * Handle cases where thumbnail is used * Expand options for thumbnail api * Fix up the does not exist condition * Remove absolute usages of thumbnails * Write thumbnails for external events * Reduce webp quality * Use webp everywhere in frontend * Formatting * Always consider all events when re-indexing * Add thumbnail deletion and cleanup path management * Cleanup imports * Rename def * Don't save thumbnail for every object * Correct event count * Use correct function * Include thumbnail in query * Remove unused * Fix requiring exception
		
			
				
	
	
		
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""Path utilities."""
 | 
						|
 | 
						|
import base64
 | 
						|
import os
 | 
						|
from pathlib import Path
 | 
						|
 | 
						|
from frigate.const import CLIPS_DIR, THUMB_DIR
 | 
						|
from frigate.models import Event
 | 
						|
 | 
						|
 | 
						|
def get_event_thumbnail_bytes(event: Event) -> bytes | None:
 | 
						|
    if event.thumbnail:
 | 
						|
        return base64.b64decode(event.thumbnail)
 | 
						|
    else:
 | 
						|
        try:
 | 
						|
            with open(
 | 
						|
                os.path.join(THUMB_DIR, event.camera, f"{event.id}.webp"), "rb"
 | 
						|
            ) as f:
 | 
						|
                return f.read()
 | 
						|
        except Exception:
 | 
						|
            return None
 | 
						|
 | 
						|
 | 
						|
### Deletion
 | 
						|
 | 
						|
 | 
						|
def delete_event_images(event: Event) -> bool:
 | 
						|
    return delete_event_snapshot(event) and delete_event_thumbnail(event)
 | 
						|
 | 
						|
 | 
						|
def delete_event_snapshot(event: Event) -> bool:
 | 
						|
    media_name = f"{event.camera}-{event.id}"
 | 
						|
    media_path = Path(f"{os.path.join(CLIPS_DIR, media_name)}.jpg")
 | 
						|
 | 
						|
    try:
 | 
						|
        media_path.unlink(missing_ok=True)
 | 
						|
        media_path = Path(f"{os.path.join(CLIPS_DIR, media_name)}-clean.png")
 | 
						|
        media_path.unlink(missing_ok=True)
 | 
						|
        return True
 | 
						|
    except OSError:
 | 
						|
        return False
 | 
						|
 | 
						|
 | 
						|
def delete_event_thumbnail(event: Event) -> bool:
 | 
						|
    if event.thumbnail:
 | 
						|
        return True
 | 
						|
    else:
 | 
						|
        Path(os.path.join(THUMB_DIR, event.camera, f"{event.id}.webp")).unlink(
 | 
						|
            missing_ok=True
 | 
						|
        )
 | 
						|
        return True
 |