64 lines
2.0 KiB
Bash
64 lines
2.0 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
REMOTE_HOST="aynish@talos.feralhosting.com"
|
|
REMOTE_PATH="private/transmission/data/tv-sonarr/"
|
|
LOCAL_PATH="/tank/media/tv"
|
|
TRACKING_FILE="/tank/media/tv/.downloaded_shows"
|
|
LOG_FILE="/tank/media/tv/download-log"
|
|
|
|
# Create local directory and tracking file if they don't exist
|
|
mkdir -p "$LOCAL_PATH"
|
|
touch "$TRACKING_FILE"
|
|
|
|
# Get list of shows on remote server
|
|
echo "$(date): Checking for new TV shows on seedbox..." >>"$LOG_FILE"
|
|
REMOTE_SHOWS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{$1=$2=$3=$4=""; sub(/^ +/, ""); print}' | grep -v '^\.') || true
|
|
|
|
if [ -z "$REMOTE_SHOWS" ]; then
|
|
echo "$(date): No shows found on remote server" >>"$LOG_FILE"
|
|
exit 0
|
|
fi
|
|
|
|
# Check each show against tracking file
|
|
NEW_SHOWS=""
|
|
while IFS= read -r show; do
|
|
if [ -n "$show" ] && ! grep -qF "$show" "$TRACKING_FILE"; then
|
|
NEW_SHOWS="$NEW_SHOWS$show\n"
|
|
echo "$(date): Found new show: $show" >>"$LOG_FILE"
|
|
fi
|
|
done <<<"$REMOTE_SHOWS"
|
|
|
|
if [ -z "$NEW_SHOWS" ]; then
|
|
echo "$(date): No new shows to download" >>"$LOG_FILE"
|
|
exit 0
|
|
fi
|
|
|
|
# Download new shows only
|
|
echo "$(date): Starting download of new shows..." >>"$LOG_FILE"
|
|
while IFS= read -r show; do
|
|
if [ -n "$show" ]; then
|
|
echo "$(date): Downloading $show" >>"$LOG_FILE"
|
|
# Set umask to allow group read/write access for Jellyfin
|
|
umask 002
|
|
if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$show/" "$LOCAL_PATH/$show/"; then
|
|
echo "$show" >>"$TRACKING_FILE"
|
|
echo "$(date): Successfully downloaded $show" >>"$LOG_FILE"
|
|
else
|
|
echo "$(date): Failed to download $show" >>"$LOG_FILE"
|
|
fi
|
|
fi
|
|
done <<<"$(echo -e "$NEW_SHOWS")"
|
|
|
|
# Trigger Jellyfin library scan
|
|
echo "$(date): Triggering Jellyfin library refresh..." >>"$LOG_FILE"
|
|
if curl -s -X POST "http://localhost:8096/Library/Refresh" \
|
|
-H "X-Emby-Token: aef1b1e0cd5445dc97b755ef8c6224e5"; then
|
|
echo "$(date): Jellyfin library refresh triggered" >>"$LOG_FILE"
|
|
else
|
|
echo "$(date): Failed to trigger Jellyfin library refresh" >>"$LOG_FILE"
|
|
fi
|
|
|
|
echo "$(date): TV sync completed" >>"$LOG_FILE"
|