+1
-1
hosts/profiles/sync/music/default.nix
+1
-1
hosts/profiles/sync/music/default.nix
+49
-6
hosts/profiles/sync/music/get-music.sh
+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