beetag fix
authorIan Kelling <ian@iankelling.org>
Wed, 30 Jul 2025 04:15:48 +0000 (00:15 -0400)
committerIan Kelling <ian@iankelling.org>
Wed, 30 Jul 2025 04:15:48 +0000 (00:15 -0400)
beetag

diff --git a/beetag b/beetag
index 456b343e31e67017638fe708d23c10ab12d59515..e6b9864397bc6efe010ea07b3e513809a607aa6e 100755 (executable)
--- a/beetag
+++ b/beetag
 #. /a/c/fsf-script-lib
 
 
-# todo: what the hell is going on here: I think I accidentally pressed r
-# for rock, then wanted to set it back, so I pressed the button for
-# dance.
-#
-#beetmq id:19324 rock=t
-#  rock: t
-#beetmq id:19324 genre=dance
-#No changes to make.
-
 
 # Must be called from beetag for variables to be setup
 beetag-help() {
@@ -70,7 +61,7 @@ beetag-help() {
 
 
 y other genres   z fg player      ' = toggle play  1-5 rate    ] repeat1
-; previous       _ delete         j/k skip         mpv_keys vol,pause,seek
+; previous       ) delete         j/k skip         mpv_keys vol,pause,seek
 EOF
     hr
     scrolled=10
@@ -165,6 +156,9 @@ mpvrpc-loadfile() {
 
 # Must be called from beetag for variables to be setup
 beetag-nostatus() {
+  if [[ $verbose == true ]]; then
+    return 0
+  fi
   if (( $# )); then
     scrolled=$(( scrolled + $1 ))
   fi
@@ -250,7 +244,7 @@ toggle-rare-genres() {
   if $do_rare_genres || [[ ! $do_rare_genres ]]; then
     do_rare_genres=false
     button_map=(${common_genres[@]} ${pl_tags[@]})
-    last_genre_i=$(( ${#rare_genres[@]} - 1 ))
+    last_genre_i=$(( ${#common_genres[@]} - 1 ))
   else
     do_rare_genres=true
     button_map=(${rare_genres[@]} ${pl_tags[@]})
@@ -375,7 +369,7 @@ note, you may want to change the play command for doing rapid taging
 by immediately jumping forward into the song. this is set in the beets
 config yaml.
 
-(available buttons: ` ) ] [ and non-printing chars, see
+(available buttons: ` _ ] [ and non-printing chars, see
 https://stackoverflow.com/questions/10679188/casing-arrow-keys-in-bash
 
 
@@ -509,6 +503,7 @@ beetag()  {
   # * According to docs, to get started: cp /usr/share/pipewire/pipewire.conf ~/.config/pipewire/pipewire.conf
   # cp /usr/share/pipewire/pipewire-pulse.conf ~/.config/pipewire/pipewire-pulse.conf
   #
+  # # audio troubleshooting measures: --audio-buffer=2 --pipewire-buffer=2000 --pulse-buffer=2000 --cache=yes --cache --cache-secs=30
   mpv --profile=a --volume=$volume --idle &
   sleep .1 # or else: socat[1103381] E connect(5, AF=1 "/tmp/mpvsock", 14): Connection refused
 
@@ -577,7 +572,7 @@ beetag()  {
           beetag-nostatus 1
           continue
           ;;
-        _)
+        ')')
           m beet rm --delete --force "id:$id"
           beetag-nostatus 4 # guessing. dont want to test atm
           j=$(( ( j + 1 ) % id_count ))
@@ -624,11 +619,19 @@ beetag()  {
           beetag-nostatus $(( id_count - skip_start - 1 ))
 
           line_int=0
-          overflow_lines=$LINES
-          for (( i=skip_start; i < overflow_lines - 1 && i < id_count; i++ )); do
+
+          if [[ ! $LINES =~ $uint_regex ]]; then err "bad LINES:'$LINES'"; return 1; fi
+          skip_end=$(( skip_start + LINES - 1 ))
+          (( skip_end <= id_count )) || skip_end=$id_count
+
+          #e "debug: skip_start: $skip_start  overflow_lines: $overflow_lines  id_count: $id_count"
+
+          for (( i=skip_start; i <= skip_end; i++ )); do
+            #e "i=$i"
             ls_line="${ls_lines[i]}"
-            overflow=$(( ${#ls_line} / ( COLUMNS - 1 ) ))
-            overflow_lines=$(( overflow_lines - overflow ))
+            line_wraps=$(( ${#ls_line} / ( COLUMNS - 1 ) ))
+            skip_end=$(( skip_end - line_wraps ))
+
             if (( i == j )); then
               echo "  * $ls_line"
               continue