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