scripts / get_cover.conf /
Newer Older
60 lines | 2.41kb
publie config
Sébastien MARQUE authored on 2023-01-14
1
medias=/media/musique
2
navidrome=/var/lib/navidrome
3
pre_get_cover () {
4
    if test ${SCAN:-3} -eq 2 -o ${SCAN:-3} -eq 3; then
5
        local nouveautes=$(mktemp --dry-run /dev/shm/XXXXXXXX)
6
        find $medias -name 'lost+found' -prune -o -type d -links 2 -print > $nouveautes
7
        sqlite3 $navidrome/navidrome.db <<< "select path from media_file" | sed -r 's,/[^/]+$,,' | sort -u >> $nouveautes
8
        sed -ri "/^${medias//\//\\\/}\/?$/d" $nouveautes
9
        local IFS=$'\n'
10
        for d in $(sort $nouveautes | uniq -u); do
11
            compgen -G "$d/cover.*" > /dev/null \
12
            || test -e "$d/.no_cover" \
13
            || albums[${#albums[@]}]=":$d"
14
        done
15
        rm $nouveautes
16
    fi
17
    if test ${SCAN:-3} -eq 1 -o ${SCAN:-3} -gt 3; then
18
        echo sync
19
        sync
20
        if test ${SCAN:-3} -gt 3; then
21
            echo scan complet
22
            local full="-f"
23
            local _files=15571 # automatiquement mis à jour
24
            local _eta=1780    # automatiquement mis à jour
25
            local files=$(find $medias -type f -printf x 2>/dev/null | wc -m)
26
            local eta=$(( files * _eta / _files ))
27
            (
28
                while test $eta -gt 0; do
29
                    printf "\r\033[Kfin scan complet prévue dans %d:%d" $((eta/60)) $((eta%60))
30
                    sleep 1
31
                    let eta--
32
                done
33
                printf "\r\033[K"
34
            )&
35
            local pid_tc=$!
36
            _eta=$(date +%s)
37
        else
38
            echo scan simple
39
        fi
40
        sudo -u navidrome ~navidrome/navidrome -c $navidrome/navidrome.toml --datafolder $navidrome/ -n --musicfolder $medias scan $full
41
    fi
42
    if test ${SCAN:-3} -gt 4; then
43
        _eta=$(( $(date +%s) - $_eta ))
44
        sed -ri "s/^(\s*local\s+_eta=)[0-9]+/\1$_eta/; s/^(\s*local\s+_files=)[0-9]+/\1$files/" ${BASH_SOURCE[0]}
45
        if test -e /proc/$pid_tc/stat && stat=($(</proc/$pid_tc/stat)) && test ${stat[3]} -eq $$; then
46
            kill $pid_tc
47
            printf "\r\033[K"
48
        fi
49
        sudo mount -o remount,ro $medias
50
        exit
51
    fi
52
    sudo mount -o remount,rw $medias
53
}
54
post_get_cover () {
55
    sudo mount -o remount,ro $medias
56
    if test ${SCAN:-3} -eq 2 -o ${SCAN:-3} -eq 3; then
57
        echo scan de fin
58
        sudo -u navidrome ~navidrome/navidrome -c $navidrome/navidrome.toml --datafolder $navidrome/ -n --musicfolder $medias scan
59
    fi
60
}