+1
hosts/box/default.nix
+1
hosts/box/default.nix
+3
hosts/profiles/gonic/default.nix
+3
hosts/profiles/gonic/default.nix
···
1
1
{ config, lib, pkgs, ... }:
2
2
{
3
+
environment.systemPackages = [ pkgs.ffmpeg ];
3
4
mossnet.gonic.enable = true;
4
5
mossnet.gonic.settings = ''
5
6
music-path /mnt/two/music/
6
7
podcast-path /data/podcasts
7
8
cache-path /data/cache
8
9
playlists-path /data/playlists
10
+
transcode-cache-size 1000
11
+
transcode-eject-interval 1440
9
12
'';
10
13
mossnet.gonic.user = "gonic";
11
14
mossnet.gonic.group = "audio";
+1
hosts/profiles/sync/music/default.nix
+1
hosts/profiles/sync/music/default.nix
+34
-27
hosts/profiles/sync/music/get-music.sh
+34
-27
hosts/profiles/sync/music/get-music.sh
···
2
2
3
3
set -euo pipefail
4
4
5
-
REMOTE_HOST="anish@talos.feralhosting.com"
5
+
REMOTE_HOST="aynish@talos.feralhosting.com"
6
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"
7
+
LOCAL_PATH="/mnt/two/incoming"
8
+
TRACKING_FILE="/mnt/two/incoming/.downloaded_albums"
9
+
LOG_FILE="/mnt/two/incoming/download-log"
10
10
11
11
# Create tracking file if it doesn't exist
12
12
touch "$TRACKING_FILE"
13
13
14
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
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 '{$1=$2=$3=$4=""; sub(/^ +/, ""); print}' | grep -v '^\.') || true
17
17
18
18
if [ -z "$REMOTE_ALBUMS" ]; then
19
-
echo "$(date): No albums found on remote server" >> "$LOG_FILE"
20
-
exit 0
19
+
echo "$(date): No albums found on remote server" >>"$LOG_FILE"
20
+
exit 0
21
21
fi
22
22
23
23
# Check each album against tracking file
24
24
NEW_ALBUMS=""
25
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"
26
+
if [ -n "$album" ] && ! grep -qF "$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
31
32
32
if [ -z "$NEW_ALBUMS" ]; then
33
-
echo "$(date): No new albums to download" >> "$LOG_FILE"
34
-
exit 0
33
+
echo "$(date): No new albums to download" >>"$LOG_FILE"
34
+
exit 0
35
35
fi
36
36
37
37
# Download new albums only
38
-
echo "$(date): Starting download of new albums..." >> "$LOG_FILE"
38
+
echo "$(date): Starting download of new albums..." >>"$LOG_FILE"
39
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")"
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/$album/"; then
43
+
echo "$album" >>"$TRACKING_FILE"
44
+
echo "$(date): Successfully downloaded $album" >>"$LOG_FILE"
50
45
51
-
echo "$(date): Music sync completed" >> "$LOG_FILE"
46
+
# Import to beets
47
+
echo "$(date): Importing $album to beets..." >>"$LOG_FILE"
48
+
if beet -p fetchart import -m -l /home/anish/music.log -q -g "$LOCAL_PATH/$album"; then
49
+
echo "$(date): Successfully imported $album to beets" >>"$LOG_FILE"
50
+
else
51
+
echo "$(date): Failed to import $album to beets" >>"$LOG_FILE"
52
+
fi
53
+
else
54
+
echo "$(date): Failed to download $album" >>"$LOG_FILE"
55
+
fi
56
+
fi
57
+
done <<<"$(echo -e "$NEW_ALBUMS")"
52
58
59
+
echo "$(date): Music sync completed" >>"$LOG_FILE"