speed up nav2beet, 8 mins to 1 min
[distro-setup] / beets-gen-playlists
index 085946cca8de0b7c0b1f6c6825ec1c4f698ee0c8..ffad368ff8dc6b9ce00b51b2f751ec5e7392d62e 100755 (executable)
@@ -1,6 +1,7 @@
 #!/bin/bash
 
-# for generating playlist config yaml
+# for generating playlist config yaml.
+# plain playlists are added manually to the yaml.
 
 f=/usr/local/lib/err;test -r $f || { echo "error: $0 no $f" >&2;exit 1;}; . $f
 
@@ -13,16 +14,21 @@ ignore_genres=(
 declare -A slow_genres_a
 slow_genres=(
   ambient
-  avantg
+  avant
   classical
   noise
+  sleep
+  mq
+  jazz
 )
 
+
 tags=(
   expl
   sad
 )
 
+
 for g in ${ignore_genres[@]}; do
   ignore_genres_a[$g]=t
 done
@@ -35,11 +41,20 @@ beat_genres=()
 
 # generate genres based on what is in the db.
 genres=()
+
+# relatively upbeat genres to listen, eg while biking
+upbeat_genres=()
 for g in $(beet ls -f '$genre' | sort -u); do
   if [[ ${ignore_genres_a[$g]} ]]; then continue; fi
   genres+=($g)
   if [[ ${slow_genres_a[$g]} ]]; then continue; fi
   beat_genres+=($g)
+  case $g in
+    chill)
+      continue
+      ;;
+    esac
+  upbeat_genres+=($g)
 done
 
 # generate regex for beat playlist
@@ -54,6 +69,18 @@ for g in ${beat_genres[@]}; do
   fi
 done
 
+# generate regex for upbeat playlist
+beat_regex=
+first=true
+for g in ${upbeat_genres[@]}; do
+  if $first; then
+    first=false
+    upbeat_regex=$g
+  else
+    upbeat_regex+="|$g"
+  fi
+done
+
 
 for g in ${genres[@]}; do
   for r in {3..5}; do
@@ -61,15 +88,15 @@ for g in ${genres[@]}; do
       pop|rap)
         cat <<EOF
     - name: ${g}-${r}.m3u
-      query: 'rating:${r}..5 genre:$g ^expl:t'
-    - name: ${g}e-${r}.m3u
-      query: 'rating:${r}..5 genre:$g'
+      query: 'rating:${r}..5 genre::^$g\$ ^expl:t ^gimicky:t ^lesser_version:t'
+    - name: ${g}-x-${r}.m3u
+      query: 'rating:${r}..5 genre::^$g\$ ^gimicky:t ^lesser_version:t'
 EOF
         ;;
       *)
         cat <<EOF
     - name: ${g}-${r}.m3u
-      query: 'rating:${r}..5 genre:$g'
+      query: 'rating:${r}..5 genre:$g ^gimicky:t ^lesser_version:t'
 EOF
         ;;
     esac
@@ -80,7 +107,7 @@ for t in ${tags[@]}; do
   for r in {3..5}; do
     cat <<EOF
     - name: ${t}-${r}.m3u
-      query: 'rating:${r}..5 $t:t'
+      query: 'rating:${r}..5 $t:t ^lesser_version:t'
 EOF
 
   done
@@ -89,8 +116,14 @@ done
 for r in {3..5}; do
   cat <<EOF
     - name: beat-${r}.m3u
-      query: 'rating:${r}..5 genre::$beat_regex ^expl:t'
-    - name: beate-${r}.m3u
-      query: 'rating:${r}..5 genre::$beat_regex'
+      query: 'rating:${r}..5 genre::$beat_regex ^expl:t ^gimicky:t ^lesser_version:t'
+    - name: beat-x-${r}.m3u
+      query: 'rating:${r}..5 genre::$beat_regex ^gimicky:t ^lesser_version:t'
+    - name: upbeat-${r}.m3u
+      query: 'rating:${r}..5 genre::$upbeat_regex ^expl:t ^gimicky:t ^lesser_version:t ^sad:t'
+    - name: upbeat-x-${r}.m3u
+      query: 'rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t ^sad:t'
+    - name: gimicky-${r}.m3u
+      query: 'rating:${r}..5 gimicky:t ^lesser_version:t'
 EOF
 done