#!/usr/bin/env bash set -euo pipefail REMOTE_HOST="anish@talos.feralhosting.com" REMOTE_PATH="private/transmission/data/" LOCAL_PATH="/data/incoming" TRACKING_FILE="/data/incoming/.downloaded_albums" LOG_FILE="/data/incoming/download-log" # Create tracking file if it doesn't exist touch "$TRACKING_FILE" # Get list of albums on remote server echo "$(date): Checking for new albums on seedbox..." >> "$LOG_FILE" REMOTE_ALBUMS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{print $5}' | grep -v '^\.') || true if [ -z "$REMOTE_ALBUMS" ]; then echo "$(date): No albums found on remote server" >> "$LOG_FILE" exit 0 fi # Check each album against tracking file NEW_ALBUMS="" while IFS= read -r album; do if [ -n "$album" ] && ! grep -q "^$album$" "$TRACKING_FILE"; then NEW_ALBUMS="$NEW_ALBUMS$album\n" echo "$(date): Found new album: $album" >> "$LOG_FILE" fi done <<< "$REMOTE_ALBUMS" if [ -z "$NEW_ALBUMS" ]; then echo "$(date): No new albums to download" >> "$LOG_FILE" exit 0 fi # Download new albums only echo "$(date): Starting download of new albums..." >> "$LOG_FILE" while IFS= read -r album; do if [ -n "$album" ]; then echo "$(date): Downloading $album" >> "$LOG_FILE" if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$album/" "$LOCAL_PATH/"; then echo "$album" >> "$TRACKING_FILE" echo "$(date): Successfully downloaded $album" >> "$LOG_FILE" else echo "$(date): Failed to download $album" >> "$LOG_FILE" fi fi done <<< "$(echo -e "$NEW_ALBUMS")" echo "$(date): Music sync completed" >> "$LOG_FILE"