···11#!/usr/bin/env bash
22-rsync -r --ignore-existing --log-file=/data/incoming/download-log hypercube@talos.feralhosting.com:private/transmission/data/* /data/incoming
3244-# you need to set defaults for beets
55-# if already imported -> Skip
66-# Auto accept changes
77-# also install it lmao
88-#beet import /data/incoming
33+set -euo pipefail
44+55+REMOTE_HOST="aynish@talos.feralhosting.com"
66+REMOTE_PATH="private/transmission/data/"
77+LOCAL_PATH="/mnt/two/incoming"
88+TRACKING_FILE="/mnt/two/incoming/.downloaded_albums"
99+LOG_FILE="/mnt/two/incoming/download-log"
1010+1111+# Create tracking file if it doesn't exist
1212+touch "$TRACKING_FILE"
9131414+# Get list of albums on remote server
1515+echo "$(date): Checking for new albums on seedbox..." >>"$LOG_FILE"
1616+REMOTE_ALBUMS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{$1=$2=$3=$4=""; sub(/^ +/, ""); print}' | grep -v '^\.') || true
1717+1818+if [ -z "$REMOTE_ALBUMS" ]; then
1919+ echo "$(date): No albums found on remote server" >>"$LOG_FILE"
2020+ exit 0
2121+fi
2222+2323+# Check each album against tracking file
2424+NEW_ALBUMS=""
2525+while IFS= read -r album; do
2626+ if [ -n "$album" ] && ! grep -qF "$album" "$TRACKING_FILE"; then
2727+ NEW_ALBUMS="$NEW_ALBUMS$album\n"
2828+ echo "$(date): Found new album: $album" >>"$LOG_FILE"
2929+ fi
3030+done <<<"$REMOTE_ALBUMS"
3131+3232+if [ -z "$NEW_ALBUMS" ]; then
3333+ echo "$(date): No new albums to download" >>"$LOG_FILE"
3434+ exit 0
3535+fi
3636+3737+# Download new albums only
3838+echo "$(date): Starting download of new albums..." >>"$LOG_FILE"
3939+while IFS= read -r album; do
4040+ if [ -n "$album" ]; then
4141+ echo "$(date): Downloading $album" >>"$LOG_FILE"
4242+ if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$album/" "$LOCAL_PATH/$album/"; then
4343+ echo "$album" >>"$TRACKING_FILE"
4444+ echo "$(date): Successfully downloaded $album" >>"$LOG_FILE"
4545+4646+ # Import to beets
4747+ echo "$(date): Importing $album to beets..." >>"$LOG_FILE"
4848+ # Set umask to allow group read/write access
4949+ umask 002
5050+ if beet -p fetchart import -m -l /home/anish/music.log -q -g "$LOCAL_PATH/$album"; then
5151+ echo "$(date): Successfully imported $album to beets" >>"$LOG_FILE"
5252+ else
5353+ echo "$(date): Failed to import $album to beets" >>"$LOG_FILE"
5454+ fi
5555+ else
5656+ echo "$(date): Failed to download $album" >>"$LOG_FILE"
5757+ fi
5858+ fi
5959+done <<<"$(echo -e "$NEW_ALBUMS")"
6060+6161+echo "$(date): Music sync completed" >>"$LOG_FILE"