summaryrefslogtreecommitdiff
path: root/syncmusic-interactive
blob: 8aa353bdc4a19c48e128edca94c6bb6105e566d2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#!/bin/bash
REMOTE=root@canonical.aberrantflux.xyz
REMOTEDIR=/srv/music
LOCALDIR=$(pwd)
WHITE="\e[37m"
GREEN="\e[32m"
BLUE="\e[35m"
rm /tmp/remotemusiclist
rm /tmp/localmusiclist
rm /tmp/localonlymusicd
rm /tmp/syncmusictorun
echo "Remote directory is at $REMOTE:$REMOTEDIR"
echo "Local dir is at $LOCALDIR"
LOCALDISCOVERED=()
LOCALCOUNT=0

for D in $(ls)
do
	if [[ $D = *"-"* ]]
	then
		LOCALCOUNT=$((LOCALCOUNT+1))
		LOCALDISCOVERED+=($D)
	else
		for D2 in $(ls $D)
		do
			LOCALCOUNT=$((LOCALCOUNT+1))
			LOCALDISCOVERED+=($D/$D2)
		done
	fi
done

ssh $REMOTE "
cd $REMOTEDIR
REMOTEDISCOVERED=()
REMOTECOUNT=0

for D in \$(ls)
do
	if [[ \$D = *"-"* ]]
	then
		REMOTECOUNT=\$((REMOTECOUNT+1))
		REMOTEDISCOVERED+=(\$D)
	else
		for D2 in \$(ls \$D)
		do
			REMOTECOUNT=\$((REMOTECOUNT+1))
			REMOTEDISCOVERED+=(\$D/\$D2)
		done
	fi
done
for (( i = 0 ; i <= \$REMOTECOUNT ; i++ ))
do
	echo \${REMOTEDISCOVERED[\$i]}
done
" > /tmp/remotemusiclist

LOCALONLYCOUNT=0
LOCALONLYMUSIC=()
UNSYNCCOUNT=0
for (( i = 0 ; i <= $LOCALCOUNT-1 ; i++ ))
do
	echo ${LOCALDISCOVERED[$i]} >> /tmp/localmusiclist
	if grep -xq ${LOCALDISCOVERED[$i]} /tmp/remotemusiclist
	then
		echo -e "$WHITE${LOCALDISCOVERED[$i]}"
	else
		UNSYNCCOUNT=$((UNSYNCCOUNT+1))
		LOCALONLYCOUNT=$((LOCALONLYCOUNT+1))
		echo "$UNSYNCCOUNT. ${LOCALDISCOVERED[$i]}" >> /tmp/localonlymusicd
		LOCALONLYMUSIC+=(${LOCALDISCOVERED[$i]})
	fi
done
echo -e $BLUE
cat /tmp/localonlymusicd
REMOTEONLYCOUNT=0
REMOTEONLYMUSIC=()
while read p; do
	if  [[ $p != "" ]]
	then
		if ! grep -xq $p /tmp/localmusiclist
		then
			UNSYNCCOUNT=$((UNSYNCCOUNT+1))
			REMOTEONLYCOUNT=$((REMOTEONLYCOUNT+1))
			echo -e "$GREEN$UNSYNCCOUNT. $p"
			REMOTEONLYMUSIC+=($p)
		fi
	fi
done < /tmp/remotemusiclist
echo -e $WHITE

echo "Discovered $UNSYNCCOUNT unsynced albums"
echo "Albums in BLUE are those that are only on the local machine. Albums in GREEN are those that are only on the remote machine. Albums in WHITE are those that are on both"
read -p "Enter the indexes corresponding to the albums you wish to sync, separated by spaces: " INPUT

for j in ${INPUT}
do
	if (( j <= $LOCALONLYCOUNT ))
	then
		FDIR=$LOCALDIR/${LOCALONLYMUSIC[$((j-1))]}
		TDIR=$REMOTE:$REMOTEDIR/${LOCALONLYMUSIC[$((j-1))]}
		COMMAND="rsync -avzP --mkpath $FDIR $TDIR"
		echo $COMMAND >> /tmp/syncmusictorun
	else
		FDIR=$REMOTE:$REMOTEDIR/${REMOTEONLYMUSIC[$(($j-$LOCALONLYCOUNT-1))]}
		TDIR=$LOCALDIR/${REMOTEONLYMUSIC[$(($j-$LOCALONLYCOUNT-1))]}
		COMMAND="rsync -avzP --mkpath $FDIR $TDIR"
		echo $COMMAND >> /tmp/syncmusictorun
	fi
done
echo "WILL RUN: $(cat /tmp/syncmusictorun)"
read -p "Enter y to confirm: " CONFIRM
if [[ $CONFIRM = y ]]
then
	$(cat /tmp/syncmusictorun)
fi
rm /tmp/remotemusiclist
rm /tmp/localmusiclist
rm /tmp/localonlymusicd
rm /tmp/syncmusictorun