fix: music downloads

Changed files
+50 -7
hosts
profiles
+1 -1
hosts/profiles/sync/music/default.nix
··· 15 15 systemd.timers.get-music-timer = { 16 16 wantedBy = [ "timers.target" ]; 17 17 partOf = [ "get-music-sync.service" ]; 18 - timerConfig.OnCalendar = [ "daily" ]; 18 + timerConfig.OnCalendar = [ "hourly" ]; 19 19 }; 20 20 }
+49 -6
hosts/profiles/sync/music/get-music.sh
··· 1 1 #!/usr/bin/env bash 2 - rsync -r --ignore-existing --log-file=/data/incoming/download-log hypercube@talos.feralhosting.com:private/transmission/data/* /data/incoming 2 + 3 + set -euo pipefail 4 + 5 + REMOTE_HOST="anish@talos.feralhosting.com" 6 + REMOTE_PATH="private/transmission/data/" 7 + LOCAL_PATH="/data/incoming" 8 + TRACKING_FILE="/data/incoming/.downloaded_albums" 9 + LOG_FILE="/data/incoming/download-log" 10 + 11 + # Create tracking file if it doesn't exist 12 + touch "$TRACKING_FILE" 13 + 14 + # Get list of albums on remote server 15 + echo "$(date): Checking for new albums on seedbox..." >> "$LOG_FILE" 16 + REMOTE_ALBUMS=$(rsync --dry-run --list-only "$REMOTE_HOST:$REMOTE_PATH" | grep '^d' | awk '{print $5}' | grep -v '^\.') || true 17 + 18 + if [ -z "$REMOTE_ALBUMS" ]; then 19 + echo "$(date): No albums found on remote server" >> "$LOG_FILE" 20 + exit 0 21 + fi 22 + 23 + # Check each album against tracking file 24 + NEW_ALBUMS="" 25 + while IFS= read -r album; do 26 + if [ -n "$album" ] && ! grep -q "^$album$" "$TRACKING_FILE"; then 27 + NEW_ALBUMS="$NEW_ALBUMS$album\n" 28 + echo "$(date): Found new album: $album" >> "$LOG_FILE" 29 + fi 30 + done <<< "$REMOTE_ALBUMS" 31 + 32 + if [ -z "$NEW_ALBUMS" ]; then 33 + echo "$(date): No new albums to download" >> "$LOG_FILE" 34 + exit 0 35 + fi 36 + 37 + # Download new albums only 38 + echo "$(date): Starting download of new albums..." >> "$LOG_FILE" 39 + while IFS= read -r album; do 40 + if [ -n "$album" ]; then 41 + echo "$(date): Downloading $album" >> "$LOG_FILE" 42 + if rsync -r --log-file="$LOG_FILE" "$REMOTE_HOST:$REMOTE_PATH$album/" "$LOCAL_PATH/"; then 43 + echo "$album" >> "$TRACKING_FILE" 44 + echo "$(date): Successfully downloaded $album" >> "$LOG_FILE" 45 + else 46 + echo "$(date): Failed to download $album" >> "$LOG_FILE" 47 + fi 48 + fi 49 + done <<< "$(echo -e "$NEW_ALBUMS")" 3 50 4 - # you need to set defaults for beets 5 - # if already imported -> Skip 6 - # Auto accept changes 7 - # also install it lmao 8 - #beet import /data/incoming 51 + echo "$(date): Music sync completed" >> "$LOG_FILE" 9 52