improve licensing
[distro-setup] / beet-data
1 #!/bin/bash
2
3 nav_tags=(
4 ## cross-genre tags that dont really make a playlist
5 expl
6 # songs i like but they get old fast due to feeling gimicky, or cringy after a while.
7 gimicky
8 # anything sad which i sometimes like or avoid.
9 sad
10
11 ## playlists
12 # intimate, love
13 love
14 # favorite songs pump up songs
15 pump1
16 # favorite rap pump up songs, allows more songs than pump1
17 pumprap
18 # heart rending, spine tickling
19 rend
20 # for running
21 run
22 )
23
24
25 pl_tags=(
26 "${nav_tags[@]}"
27 # alternate version of a song we already have which isn't as good
28 lesser_version
29 )
30
31 nav_convert_query="^genre:spoken-w ^genre:skit ^lesser_version:t rating:3..5"
32
33
34 common_genres=(
35 ambient
36 # gangsta rap / angry rap. something like g-rap would make beet queries for genre:rap include it
37 arp
38 avant
39 blues
40 # slow instrumental. todo: reclassify some ambient into this.
41 chill
42 classical
43 country
44 # lyrical edm. todo: some pop needs reclassification to this
45 dance
46 # like power glove
47 darkwave
48 hardcore
49 # nonvocal / instrumental
50 nv
51 latin
52 metal
53 # mq = mac quale. similar to the mr robot soundtracks.
54 # slow, foreboding. usually electronic.
55 mq
56 pop
57 rap
58 rock
59 # like rain by brian crain. mostly slow airy/broody piano
60 sleep
61 techno
62 world
63 )
64
65 # because we were destined to run out of single key buttons.
66 rare_genres=(
67 jazz
68 musical
69 noise
70 skit
71 spoken-w
72 )
73
74 all_genres=(${common_genres[@]} ${rare_genres[@]})
75
76
77
78 #### playlist things #####
79
80
81 declare -A ignore_genres_a
82 ignore_genres=(
83 skit
84 spoken-w
85 )
86
87 declare -A slow_genres_a
88 slow_genres=(
89 ambient
90 avant
91 classical
92 noise
93 sleep
94 mq
95 jazz
96 )
97
98
99 tags=(
100 expl
101 sad
102 )
103
104 declare -A bpla # beet playlist associative array
105 beetapl() { # beet add playlist
106 local name
107 name="$1"
108 shift
109 bpla[$name]="${@@Q}"
110 }
111
112
113 # this function is just so we can have some local vars
114 # and not mess with the global var namespace.
115 _beet-gen-global-vars() {
116
117 local first g t r
118
119 for g in ${ignore_genres[@]}; do
120 ignore_genres_a[$g]=t
121 done
122 for g in ${slow_genres[@]}; do
123 slow_genres_a[$g]=t
124 done
125
126 # genres that have a beat
127 beat_genres=()
128 genres=()
129
130
131 # relatively upbeat genres to listen, eg while biking
132 upbeat_genres=()
133 for g in ${all_genres[@]}; do
134 if [[ ${ignore_genres_a[$g]} ]]; then continue; fi
135 genres+=($g)
136 if [[ ${slow_genres_a[$g]} ]]; then continue; fi
137 beat_genres+=($g)
138 case $g in
139 chill)
140 continue
141 ;;
142 esac
143 upbeat_genres+=($g)
144 done
145
146 # generate regex for beat playlist
147 beat_regex=
148 first=true
149 for g in ${beat_genres[@]}; do
150 if $first; then
151 first=false
152 beat_regex=$g
153 else
154 beat_regex+="|$g"
155 fi
156 done
157
158 # generate regex for upbeat playlist
159 upbeat_regex=
160 first=true
161 for g in ${upbeat_genres[@]}; do
162 if $first; then
163 first=false
164 upbeat_regex=$g
165 else
166 upbeat_regex+="|$g"
167 fi
168 done
169
170
171 for g in ${genres[@]}; do
172 for r in {3..5}; do
173 case $g in
174 pop|rap)
175 beetapl ${g}-${r} rating:${r}..5 genre::^$g\$ ^expl:t ^gimicky:t ^lesser_version:t
176 beetapl ${g}-x-${r} rating:${r}..5 genre::^$g\$ ^gimicky:t ^lesser_version:t
177 ;;
178 *)
179 beetapl ${g}-${r} rating:${r}..5 genre:$g ^gimicky:t ^lesser_version:t
180 ;;
181 esac
182 done
183 done
184
185 for t in ${tags[@]}; do
186 for r in {3..5}; do
187 beetapl ${t}-${r} rating:${r}..5 $t:t ^lesser_version:t
188 done
189 done
190
191 for r in {3..5}; do
192 beetapl beat-${r} rating:${r}..5 genre::$beat_regex ^expl:t ^gimicky:t ^lesser_version:t
193 beetapl beat-x-${r} rating:${r}..5 genre::$beat_regex ^gimicky:t ^lesser_version:t
194 beetapl upbeat-${r} rating:${r}..5 genre::$upbeat_regex ^expl:t ^gimicky:t ^lesser_version:t ^sad:t
195 beetapl upbeat-x-${r} rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t ^sad:t
196 beetapl gimicky-${r} rating:${r}..5 gimicky:t ^lesser_version:t
197 done
198
199 for r in {3..5}; do
200 beetapl \
201 sy$r rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t 'artist:sonic youth'
202 done
203
204 for t in ${nav_tags[@]}; do
205 beetapl $t $t:t
206 done
207 }
208 _beet-gen-global-vars