lots of fixes, new music stuff
[distro-setup] / beets-gen-playlists
1 #!/bin/bash
2
3 # for generating playlist config yaml
4
5 f=/usr/local/lib/err;test -r $f || { echo "error: $0 no $f" >&2;exit 1;}; . $f
6
7 declare -A ignore_genres_a
8 ignore_genres=(
9 skit
10 spoken-w
11 )
12
13 declare -A slow_genres_a
14 slow_genres=(
15 ambient
16 avantg
17 classical
18 noise
19 )
20
21 tags=(
22 expl
23 sad
24 )
25
26 for g in ${ignore_genres[@]}; do
27 ignore_genres_a[$g]=t
28 done
29 for g in ${slow_genres[@]}; do
30 slow_genres_a[$g]=t
31 done
32
33 # genres that have a beat
34 beat_genres=()
35
36 # generate genres based on what is in the db.
37 genres=()
38 for g in $(beet ls -f '$genre' | sort -u); do
39 if [[ ${ignore_genres_a[$g]} ]]; then continue; fi
40 genres+=($g)
41 if [[ ${slow_genres_a[$g]} ]]; then continue; fi
42 beat_genres+=($g)
43 done
44
45 # generate regex for beat playlist
46 beat_regex=
47 first=true
48 for g in ${beat_genres[@]}; do
49 if $first; then
50 first=false
51 beat_regex=$g
52 else
53 beat_regex+="|$g"
54 fi
55 done
56
57
58 for g in ${genres[@]}; do
59 for r in {3..5}; do
60 case $g in
61 pop|rap)
62 cat <<EOF
63 - name: ${g}-${r}.m3u
64 query: 'rating:${r}..5 genre:$g ^expl:t'
65 - name: ${g}e-${r}.m3u
66 query: 'rating:${r}..5 genre:$g'
67 EOF
68 ;;
69 *)
70 cat <<EOF
71 - name: ${g}-${r}.m3u
72 query: 'rating:${r}..5 genre:$g'
73 EOF
74 ;;
75 esac
76 done
77 done
78
79 for t in ${tags[@]}; do
80 for r in {3..5}; do
81 cat <<EOF
82 - name: ${t}-${r}.m3u
83 query: 'rating:${r}..5 $t:t'
84 EOF
85
86 done
87 done
88
89 for r in {3..5}; do
90 cat <<EOF
91 - name: beat-${r}.m3u
92 query: 'rating:${r}..5 genre::$beat_regex ^expl:t'
93 - name: beate-${r}.m3u
94 query: 'rating:${r}..5 genre::$beat_regex'
95 EOF
96 done