#!/bin/bash BASE_DIR="/files" CURRENT_DIR="$BASE_DIR/current" mkdir -p "$CURRENT_DIR" # Store last SHA256 checksums for each camera declare -A LAST_SHA echo "[Watcher] Starting to monitor subfolders in $BASE_DIR ..." while true; do for CAM_DIR in "$BASE_DIR"/msvcam*; do [ -d "$CAM_DIR" ] || continue CAM_NAME=$(basename "$CAM_DIR") OUT_FILE="$CURRENT_DIR/${CAM_NAME}.avif" # Find the newest image NEWEST_FILE=$(find "$CAM_DIR" -type f -iregex ".*\.\(jpg\|jpeg\|png\|bmp\|tif\|tiff\)" -printf "%T@ %p\n" | sort -n | tail -1 | awk '{print $2}') if [ -n "$NEWEST_FILE" ]; then # Calculate SHA256 of the newest image SHA=$(sha256sum "$NEWEST_FILE" | awk '{print $1}') # Check if this file has already been converted if [ "${LAST_SHA[$CAM_NAME]}" != "$SHA" ]; then echo "[Watcher] New or changed file detected for $CAM_NAME: $NEWEST_FILE" avifenc "$NEWEST_FILE" "$OUT_FILE" sync LAST_SHA[$CAM_NAME]="$SHA" else echo "[Watcher] No change detected for $CAM_NAME, skipping conversion." fi fi done sleep 5 done