diff --git a/Arrs_Stack/arr_download_orphan_cleaner.sh b/Arrs_Stack/arr_download_orphan_cleaner.sh index ca4f547..8b58339 100755 --- a/Arrs_Stack/arr_download_orphan_cleaner.sh +++ b/Arrs_Stack/arr_download_orphan_cleaner.sh @@ -59,7 +59,7 @@ # USAGE # ============================================================================================== # -# arr_download_orphan_cleaner.sh — weekly orchestrator entry +# arr_download_orphan_cleaner.sh — daily orchestrator entry # arr_download_orphan_cleaner.sh --dry-run — classify and report only # arr_download_orphan_cleaner.sh --status — show config and exit # arr_download_orphan_cleaner.sh --i-know-what-im-doing — bypass MAX_DELETE_GB cap @@ -293,7 +293,9 @@ echo "$ICON_TRASH Deleted: $TOTAL_DELETED ($((TOTAL_DELETED_MB / 1024))G echo "$ICON_RUN Import scans: $TOTAL_SCANS" echo "$ICON_WARN Held: $TOTAL_HELD" -if [[ "$DRY_RUN" != true ]] && (( TOTAL_DELETED > 0 || TOTAL_HELD > 0 )); then +# Held alone never notifies — there is always something awaiting review, and on a daily +# schedule that would be a notification every morning saying nothing happened. +if [[ "$DRY_RUN" != true ]] && (( TOTAL_DELETED > 0 )); then notify "Download orphan cleaner on $(hostname): deleted $TOTAL_DELETED orphans ($((TOTAL_DELETED_MB / 1024))G), triggered $TOTAL_SCANS import scans, $TOTAL_HELD held for review" \ "Download Orphan Cleaner" "normal" fi diff --git a/Deployment/master.conf.template b/Deployment/master.conf.template index 0edb34a..224ff80 100644 --- a/Deployment/master.conf.template +++ b/Deployment/master.conf.template @@ -398,6 +398,11 @@ "Arrs_Stack/lidarr_cleanup.sh" # remove orphaned music files "Arrs_Stack/sonarr_cleanup.sh" # remove orphaned TV files "Arrs_Stack/radarr_cleanup.sh" # remove orphaned movie files + # Daily, not weekly — DOWNLOAD_ORPHAN_AGE gates each folder on its own mtime, so + # frequency costs nothing in safety, but a weekly run clears a whole week of + # newly-eligible orphans at once and can exceed DOWNLOAD_ORPHAN_MAX_DELETE_GB, which + # aborts the pass entirely and rolls the backlog into an even larger next run. + "Arrs_Stack/arr_download_orphan_cleaner.sh" # sweep orphaned completed downloads out of the SAB Completed folders — deletes junk + already-imported leftovers, triggers import scans for genuinely-missing content # Runs after cleanup, not before — frees disk space from orphans/junk first, so the # searches triggered below (for relocated hasFile=false/episodeFileCount=0 entries) # have headroom for the new grabs they cause, rather than contending with clutter @@ -439,7 +444,6 @@ "unRAID_Essentials/clear_logs.sh" # purge aged logs — Sunday only, low priority "Arrs_Stack/arr_full_rescan.sh" # full disk↔DB reconciliation for Lidarr/Sonarr/Radarr — keeps tracked stats honest, runs before discovery so it works off fresh data "Arrs_Stack/arr_corruption_scan.sh --remediate" # ffprobe-based corruption sweep of Sonarr's tracked files — deletes+re-searches only after CORRUPTION_SCAN_STRIKE_LIMIT consecutive hits on the same file - "Arrs_Stack/arr_download_orphan_cleaner.sh" # sweep orphaned completed downloads out of the SAB Completed folders — deletes junk + already-imported leftovers, triggers import scans for genuinely-missing content "Arrs_Stack/playback_aware_lidarr_discovery.sh" # behavior-driven music discovery using weekly Emby playback history "Arrs_Stack/playback_aware_radarr_discovery.sh" # behavior-driven movie discovery using TMDB recommendations "Arrs_Stack/playback_aware_sonarr_discovery.sh" # behavior-driven TV discovery using TMDB recommendations