various fixes
[distro-setup] / music-tag-sync
1 #!/bin/bash -l
2 set -eE -o pipefail
3 trap 'echo "$0:$LINENO:error: \"$BASH_COMMAND\" returned $?" >&2' ERR
4 # cd /k/music
5 # find -type f -name '*.flac' | while read -r f; do
6 # mkdir -p "../flacs/$(dirname "$f")"
7 # mv -T "$f" ../flacs/"$f"
8 # done
9
10
11
12 # todo, add settings from /etc/default/nfs-{common,kernel-server}
13 # todo: do mysql setup. kodi install. mysql backup.
14
15 # in kodi, music, add files, named source, add network share,
16 # server address: iank.life
17 # path: k/music
18
19
20
21 rm -f /a/tmp/y.sql
22
23 cd /k/music
24 find -type f \( -name '*.flac' -or -name '*.mp3' -or -name '*.m4a' \) | while read -r f; do
25 rating=$(kid3-cli -c "get RATING" "$f")
26 if [[ ! $rating ]]; then
27 echo $f
28 continue
29 fi
30 rating=$((rating*2))
31
32 ## begin sql escaping
33 f="${f//\"/\\\"}"
34 f="${f//\'/\\\'}"
35 f="${f//_/\\_}"
36 f="${f//%/\\%}"
37 ## end sql escaping
38 d=${f%/*}
39 d=${d#./}/ # use exact dir format that is in database
40 cat >>/a/tmp/y.sql <<EOF
41 update song
42 inner join path on song.idPath = path.idPath
43 set song.userrating = $rating
44 where song.strFileName = '${f##*/}' and path.strPath = 'nfs://iank.life/k/music/$d';
45 EOF
46 done