#!/bin/sh # radarr_postprocess.sh POSIX; mapping SRC->DST + .state (mmes verrous/droits) set -eu umask 002 LOG="${LOG:-/srv/dev-disk-by-uuid-167c3d64-0b12-412d-9453-f941e78f8f6e/data/scripts/log/radarr_postprocess.log}" MAP="${MAP:-/srv/dev-disk-by-uuid-167c3d64-0b12-412d-9453-f941e78f8f6e/data/scripts/mapping_entries.txt}" STATE_DIR="${STATE_DIR:-/srv/dev-disk-by-uuid-167c3d64-0b12-412d-9453-f941e78f8f6e/data/scripts/state}" LOCKDIR="${LOCKDIR:-${MAP}.lockdir}" MAP_OWNER="${MAP_OWNER:-}" MAP_GROUP="${MAP_GROUP:-}" ts(){ date '+%F %T'; } EVT="${radarr_eventtype:-}" NEW="${radarr_moviefile_path:-}" OLD="${radarr_moviefile_sourcepath:-}" ISUP="${radarr_isupgrade:-false}" mkdir -p "$(dirname "$LOG")" "$STATE_DIR" : > "$LOG" 2>/dev/null || true touch "$MAP" 2>/dev/null || true echo "$(ts) [Start] Radarr event=${EVT}" >> "$LOG" [ "$EVT" = "Test" ] && { echo "$(ts) [Info] Test event -> exit 0" >> "$LOG"; exit 0; } if [ -z "$OLD" ] || [ -z "$NEW" ]; then echo "$(ts) [Warn] empty OLD/NEW -> skip (OLD='$OLD' NEW='$NEW')" >> "$LOG" exit 0 fi i=0 while ! mkdir "$LOCKDIR" 2>/dev/null; do i=$((i+1)); [ $i -ge 10 ] && { echo "$(ts) [Warn] lock timeout -> write without lock" >> "$LOG"; break; } sleep 0.2 done echo "RADARR|$OLD|$NEW" >> "$MAP" chmod 664 "$MAP" 2>/dev/null || true [ -n "$MAP_OWNER$MAP_GROUP" ] && chown "${MAP_OWNER:-}:${MAP_GROUP:-}" "$MAP" 2>/dev/null || true rmdir "$LOCKDIR" 2>/dev/null || true base="$(basename "$OLD" | tr ' /\"()[]' '_________')" STATE_FILE="$STATE_DIR/${base}.state" ADDED="$(date +%s)" UPG=0 case "$(printf %s "$EVT" | tr '[:upper:]' '[:lower:]')" in *upgrade*) UPG=1;; esac case "$(printf %s "$ISUP" | tr '[:upper:]' '[:lower:]')" in true) UPG=1;; esac { echo "category=RADARR" echo "added=$ADDED" echo "upgrade=$UPG" echo "old_path=$OLD" echo "new_path=$NEW" } > "$STATE_FILE" echo "$(ts) [State] $STATE_FILE (upgrade=$UPG)" >> "$LOG" echo "$(ts) [Done] Radarr" >> "$LOG" exit 0