host info updates
[distro-setup] / beet-data
index b41b05bf4c5a4856cf2f04f7500c76f40f9866b3..0aee2b4d9577e061ee861799758860f0e18d4701 100644 (file)
--- a/beet-data
+++ b/beet-data
@@ -1,4 +1,25 @@
 #!/bin/bash
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+#     http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
 
 nav_tags=(
   ## cross-genre tags that dont really make a playlist
@@ -21,6 +42,7 @@ nav_tags=(
   run
 )
 
+
 pl_tags=(
   "${nav_tags[@]}"
   # alternate version of a song we already have which isn't as good
@@ -45,7 +67,8 @@ common_genres=(
   # like power glove
   darkwave
   hardcore
-  instrumental
+  # nonvocal / instrumental
+  nv
   latin
   metal
   # mq = mac quale. similar to the mr robot soundtracks.
@@ -99,99 +122,108 @@ tags=(
   sad
 )
 
-
-for g in ${ignore_genres[@]}; do
-  ignore_genres_a[$g]=t
-done
-for g in ${slow_genres[@]}; do
-  slow_genres_a[$g]=t
-done
-
-# genres that have a beat
-beat_genres=()
-genres=()
-
-
-# relatively upbeat genres to listen, eg while biking
-upbeat_genres=()
-for g in ${all_genres[@]}; 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
-beat_regex=
-first=true
-for g in ${beat_genres[@]}; do
-  if $first; then
-    first=false
-    beat_regex=$g
-  else
-    beat_regex+="|$g"
-  fi
-done
-
-# generate regex for upbeat playlist
-upbeat_regex=
-first=true
-for g in ${upbeat_genres[@]}; do
-  if $first; then
-    first=false
-    upbeat_regex=$g
-  else
-    upbeat_regex+="|$g"
-  fi
-done
-
 declare -A bpla # beet playlist associative array
 beetapl() { # beet add playlist
   local name
   name="$1"
   shift
-  bpla[$name]="${@@Q}"
+  bpla[$name]="${*@Q}"
 }
 
-for g in ${genres[@]}; do
-  for r in {3..5}; do
+
+# this function is just so we can have some local vars
+# and not mess with the global var namespace.
+_beet-gen-global-vars() {
+
+  local first g t r
+
+  for g in ${ignore_genres[@]}; do
+    ignore_genres_a[$g]=t
+  done
+  for g in ${slow_genres[@]}; do
+    slow_genres_a[$g]=t
+  done
+
+  # genres that have a beat
+  beat_genres=()
+  genres=()
+
+
+  # relatively upbeat genres to listen, eg while biking
+  upbeat_genres=()
+  for g in ${all_genres[@]}; 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
-      pop|rap)
-        beetapl ${g}-${r} rating:${r}..5 genre::^$g\$ ^expl:t ^gimicky:t ^lesser_version:t
-        beetapl ${g}-x-${r} rating:${r}..5 genre::^$g\$ ^gimicky:t ^lesser_version:t
-        ;;
-      *)
-        beetapl ${g}-${r} rating:${r}..5 genre:$g ^gimicky:t ^lesser_version:t
+      chill)
+        continue
         ;;
     esac
+    upbeat_genres+=($g)
+  done
+
+  # generate regex for beat playlist
+  beat_regex=
+  first=true
+  for g in ${beat_genres[@]}; do
+    if $first; then
+      first=false
+      beat_regex=$g
+    else
+      beat_regex+="|$g"
+    fi
+  done
+
+  # generate regex for upbeat playlist
+  upbeat_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
+      case $g in
+        pop|rap)
+          beetapl ${g}-${r} rating:${r}..5 genre::^$g\$ ^expl:t ^gimicky:t ^lesser_version:t
+          beetapl ${g}-x-${r} rating:${r}..5 genre::^$g\$ ^gimicky:t ^lesser_version:t
+          ;;
+        *)
+          beetapl ${g}-${r} rating:${r}..5 genre:$g ^gimicky:t ^lesser_version:t
+          ;;
+      esac
+    done
+  done
+
+  for t in ${tags[@]}; do
+    for r in {3..5}; do
+      beetapl ${t}-${r} rating:${r}..5 $t:t ^lesser_version:t
+    done
+  done
+
+  for r in {3..5}; do
+    beetapl beat-${r} rating:${r}..5 genre::$beat_regex ^expl:t ^gimicky:t ^lesser_version:t
+    beetapl beat-x-${r} rating:${r}..5 genre::$beat_regex ^gimicky:t ^lesser_version:t
+    beetapl upbeat-${r} rating:${r}..5 genre::$upbeat_regex ^expl:t ^gimicky:t ^lesser_version:t ^sad:t
+    beetapl upbeat-x-${r} rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t ^sad:t
+    beetapl gimicky-${r} rating:${r}..5 gimicky:t ^lesser_version:t
   done
-done
 
-for t in ${tags[@]}; do
   for r in {3..5}; do
-    beetapl ${t}-${r} rating:${r}..5 $t:t ^lesser_version:t
+    beetapl \
+      sy$r rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t 'artist:sonic youth'
+  done
+
+  for t in ${nav_tags[@]}; do
+    beetapl $t $t:t
   done
-done
-
-for r in {3..5}; do
-  beetapl beat-${r} rating:${r}..5 genre::$beat_regex ^expl:t ^gimicky:t ^lesser_version:t
-  beetapl beat-x-${r} rating:${r}..5 genre::$beat_regex ^gimicky:t ^lesser_version:t
-  beetapl upbeat-${r} rating:${r}..5 genre::$upbeat_regex ^expl:t ^gimicky:t ^lesser_version:t ^sad:t
-  beetapl upbeat-x-${r} rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t ^sad:t
-  beetapl gimicky-${r} rating:${r}..5 gimicky:t ^lesser_version:t
-done
-
-for r in {3..5}; do
-  beetapl \
-    sy$r rating:${r}..5 genre::$upbeat_regex ^gimicky:t ^lesser_version:t 'artist:sonic youth'
-done
-
-for t in ${nav_tags[@]}; do
-  beetapl $t $t:t
-done
+}
+_beet-gen-global-vars