fix for beets renaming genre to genres
authorIan Kelling <ian@iankelling.org>
Sun, 3 May 2026 18:53:59 +0000 (14:53 -0400)
committerIan Kelling <ian@iankelling.org>
Sun, 3 May 2026 18:53:59 +0000 (14:53 -0400)
beet [deleted file]
beet-data
beetag
brc2
distro-end
subdir_files/.config/konsolerc

diff --git a/beet b/beet
deleted file mode 100755 (executable)
index 88ef765..0000000
--- a/beet
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/bash
-
-~/.local/bin/uvx --exclude-newer='31 days' --from 'beets[lyrics,discogs]' beet "$@"
index 681c5b2bdde3f42bf51967c3ab496b7fa9fad510..20adab9c26402d7f9f0ae4d222d8c1b30548d8e8 100644 (file)
--- a/beet-data
+++ b/beet-data
@@ -53,10 +53,10 @@ pl_tags=(
   lesser_version
 )
 
-nav_convert_query="^genre:spoken-w ^genre:skit ^lesser_version:t rating:3..5"
+nav_convert_query="^genres:spoken-w ^genres:skit ^lesser_version:t rating:3..5"
 
 common_genres=(
-  # gangsta rap / angry rap. something like g-rap would make beet queries for genre:rap include it
+  # gangsta rap / angry rap. something like g-rap would make beet queries for genres:rap include it
   arp
   avant
   blues
@@ -197,11 +197,11 @@ beet-gen-global-vars() {
     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 genres::^$g\$ ^expl:t ^gimicky:t ^lesser_version:t
+          beetapl ${g}-x-${r} rating:${r}..5 genres::^$g\$ ^gimicky:t ^lesser_version:t
           ;;
         *)
-          beetapl ${g}-${r} rating:${r}..5 genre:$g ^gimicky:t ^lesser_version:t
+          beetapl ${g}-${r} rating:${r}..5 genres:$g ^gimicky:t ^lesser_version:t
           ;;
       esac
     done
@@ -214,16 +214,16 @@ beet-gen-global-vars() {
   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 beat-${r} rating:${r}..5 genres::$beat_regex ^expl:t ^gimicky:t ^lesser_version:t
+    beetapl beat-x-${r} rating:${r}..5 genres::$beat_regex ^gimicky:t ^lesser_version:t
+    beetapl upbeat-${r} rating:${r}..5 genres::$upbeat_regex ^expl:t ^gimicky:t ^lesser_version:t ^sad:t
+    beetapl upbeat-x-${r} rating:${r}..5 genres::$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'
+      sy$r rating:${r}..5 genres::$upbeat_regex ^gimicky:t ^lesser_version:t 'artist:sonic youth'
   done
 
   for t in ${nav_tags[@]}; do
diff --git a/beetag b/beetag
index f81aaabd22803856a7b3c3f7486f5fb7c3226d25..19ad1c89eb7409472508d4237efb3e366f9a5a21 100755 (executable)
--- a/beetag
+++ b/beetag
@@ -267,7 +267,7 @@ beetag-ls-setup() {
 
   # note: PijokVipiotOzeph is just a random string for a delimiter
   # shellcheck disable=SC2016 # false positive
-  fmt='%ifdef{rating,$rating }'"$tag_query"'$genre | $title - $artist - $album   $length  $id PijokVipiotOzeph $path'
+  fmt='%ifdef{rating,$rating }'"$tag_query"'$genres | $title - $artist - $album   $length  $id PijokVipiotOzeph $path'
 
 
   for tag in "${pl_tags[@]}"; do
@@ -744,7 +744,7 @@ beetag()  {
         continue
       fi
       if (( char_i <= last_genre_i )); then
-        m beetmq "id:$id" genre=$new_item
+        m beetmq "id:$id" genres=$new_item
       else
         remove=false
         for tag in ${tags[@]}; do
diff --git a/brc2 b/brc2
index 69af5890431733d10a144aba09aef4e2ec80743d..7814ae07245afa31183deeba6248e4993ff96556 100644 (file)
--- a/brc2
+++ b/brc2
@@ -696,6 +696,10 @@ complete -W "${!bpla[*]}" bpl
 
 
 # usage: FILE|ALBUM_DIR [GENRE] [RATING]
+#
+# Note: the beets genre field is "genres" with an s in case you use that
+# field to store an ad-hoc set of genres. You'd presumably separate them
+# with something like ; or : or ,
 beetadd() {
   local import_path genre_arg single_track_arg rating_arg
   import_path="$1"
@@ -703,7 +707,7 @@ beetadd() {
     echo "beetadd error: path does not exist"
   fi
   if [[ $2 ]]; then
-    genre_arg="--set genre=$2"
+    genre_arg="--set genres=$2"
   fi
   if [[ $3 ]]; then
     rating_arg="--set rating=$3"
@@ -772,7 +776,7 @@ beetconvert() {
   rm "$tmpf"
 }
 
-nav_convert_query="^genre:spoken-w ^genre:skit ^lesser_version:t rating:3..5"
+nav_convert_query="^genres:spoken-w ^genres:skit ^lesser_version:t rating:3..5"
 
 
 # This deletes files in the converted directory which should no longer
@@ -903,7 +907,7 @@ er() {
 #
 beegenre() {
   local count artist artregex genre singleartist tmpf tmpf2
-  local -a artists genres
+  local -a artists genre_ary
   singleartist=false
   if [[ $1 == artist:* ]]; then
     singleartist=true
@@ -923,18 +927,18 @@ beegenre() {
     while read -r artist; do
       artregex=$(er "$artist")
       # shellcheck disable=SC2016 # obvious reason
-      beet ls -f '$genre' "artist::^$artregex$" "${@/#/^}" | sort | uniq -c | sort -n | tail -n1 >$tmpf2
+      beet ls -f '$genres' "artist::^$artregex$" "${@/#/^}" | sort | uniq -c | sort -n | tail -n1 >$tmpf2
       read -r count genre <$tmpf2 || continue
       if [[ $count ]]; then
         artists+=("$artregex")
-        genres+=("$genre")
-        echo "beet modify -y $* \"artist::^$artist$\" genre=$genre # $count"
+        genre_ary+=("$genre")
+        echo "beet modify -y $* \"artist::^$artist$\" genres=$genre # $count"
       fi
     done <$tmpf
     read -r -N 1 -s -p "Y/n " char
     if [[ $char == [Yy$'\n'] ]]; then
       for (( i=0; i<${#artists[@]}; i++ )); do
-        beet modify -y "$@"  "artist::^${artists[i]}$" genre=${genre[i]}
+        beet modify -y "$@"  "artist::^${artists[i]}$" genres=${genre_ary[i]}
       done
     fi
   fi
index 2ba01e76e8ee9b3d332284744dd71639b73f1405..064f0f2658f459475448bf828fc9cd82841ee163 100755 (executable)
@@ -1722,7 +1722,10 @@ if ! type -p uv &>/dev/null; then
   curl -LsSf https://astral.sh/uv/install.sh | sh
 fi
 
-
+# I tried doing what UV implies is good and using uvx instad of
+# installing, but it was buggy. This was that:
+# ~/.local/bin/uvx --exclude-newer='31 days' --from 'beets[lyrics,discogs]' beet "$@"
+uv tool install --exclude-newer='31 days' --from 'beets[lyrics,discogs]' beets
 
 
 
index ec251f8773ac0724b1d6dc8618a2e3079a11873f..133d49924dd93a7bcfc9277ca2d56848c1cef615 100644 (file)
@@ -25,8 +25,8 @@ ShowMenuBarByDefault=false
 2 screens: YPosition=2
 3840x2160 screen: Height=2156
 3840x2160 screen: Width=1916
-3840x2160 screen: XPosition=1282
-3840x2160 screen: YPosition=1082
+3840x2160 screen: XPosition=1922
+3840x2160 screen: YPosition=2
 DP-0=DP-0
 DP-1 eDP-1=DP-1
 DP-1-1 eDP-1=DP-1-1