cache view and bugfixes

This commit is contained in:
2025-08-25 17:19:15 +02:00
parent 58930c75e1
commit fac25108a6
3 changed files with 99 additions and 81 deletions

View File

@@ -288,13 +288,14 @@ if [ "${1:-}" = "--internal-list-recordings" ]; then
cut -d "$(printf '\t')" -f 2- | cut -d "$(printf '\t')" -f 2- |
column -t -s "$(printf '\t')" -R 2,3,6 | column -t -s "$(printf '\t')" -R 2,3,6 |
sed 's| \+\([0-9a-f-]\+\):\(.*$\)$|\t\1\t\2|' sed 's| \+\([0-9a-f-]\+\):\(.*$\)$|\t\1\t\2|'
if [ -f "$rectmp" ]; then if [ "${rectmp:-}" ] && [ -f "$rectmp" ]; then
rm -f "$rectmp" rm -f "$rectmp"
fi fi
exit 0 exit 0
fi fi
if [ "${1:-}" = "--internal-list-local-artists" ]; then if [ "${1:-}" = "--internal-list-local-artists" ]; then
if ! cat "$LOCALDATA_ARTISTS_VIEW" 2>/dev/null; then
while IFS= read -r aid; do while IFS= read -r aid; do
mb_artist "$aid" | $JQ -r '[ mb_artist "$aid" | $JQ -r '[
.id, .id,
@@ -313,12 +314,16 @@ if [ "${1:-}" = "--internal-list-local-artists" ]; then
-v format_disambiguation="$AV_DISAMBIGUATION" \ -v format_disambiguation="$AV_DISAMBIGUATION" \
-v format_local="$FORMAT_LOCAL" \ -v format_local="$FORMAT_LOCAL" \
"$AWK_ARTISTS" | "$AWK_ARTISTS" |
sort |
column -t -s "$(printf '\t')" | column -t -s "$(printf '\t')" |
sed 's| \+\([0-9a-f-]\+\)$|\t\1|' sed 's| \+\([0-9a-f-]\+\)$|\t\1|' |
tee "$LOCALDATA_ARTISTS_VIEW"
fi
exit 0 exit 0
fi fi
if [ "${1:-}" = "--internal-list-local-releasegroups" ]; then if [ "${1:-}" = "--internal-list-local-releasegroups" ]; then
if ! cat "$LOCALDATA_RELEASEGROUPS_VIEW" 2>/dev/null; then
while IFS= read -r rgid; do while IFS= read -r rgid; do
mb_releasegroup "$rgid" | $JQ -r '[ mb_releasegroup "$rgid" | $JQ -r '[
.id, .id,
@@ -331,6 +336,7 @@ if [ "${1:-}" = "--internal-list-local-releasegroups" ]; then
done <"$LOCALDATA_RELEASEGROUPS" | done <"$LOCALDATA_RELEASEGROUPS" |
awk \ awk \
-F "\t" \ -F "\t" \
-v file_local_releasegroups="${LOCALDATA_RELEASEGROUPS:-}" \
-v format_release="$RGV_RELEASE" \ -v format_release="$RGV_RELEASE" \
-v format_release_w_artist="$RGV_RELEASE_W_ARTIST" \ -v format_release_w_artist="$RGV_RELEASE_W_ARTIST" \
-v format_year="$RGV_YEAR" \ -v format_year="$RGV_YEAR" \
@@ -353,15 +359,19 @@ if [ "${1:-}" = "--internal-list-local-releasegroups" ]; then
-v format_mixtape="$FORMAT_TYPE_SECONDARY_MIXTAPE" \ -v format_mixtape="$FORMAT_TYPE_SECONDARY_MIXTAPE" \
-v format_demo="$FORMAT_TYPE_SECONDARY_DEMO" \ -v format_demo="$FORMAT_TYPE_SECONDARY_DEMO" \
-v format_fieldrec="$FORMAT_TYPE_SECONDARY_FIELDREC" \ -v format_fieldrec="$FORMAT_TYPE_SECONDARY_FIELDREC" \
-v format_local="$FORMAT_LOCAL" \
"$AWK_RELEASEGROUPS" | "$AWK_RELEASEGROUPS" |
sort -n -r | sort -n -r |
cut -d "$(printf '\t')" -f 2- | cut -d "$(printf '\t')" -f 2- |
column -t -s "$(printf '\t')" | column -t -s "$(printf '\t')" |
sed 's| \+\([0-9a-f-]\+\)$|\t\1|' sed 's| \+\([0-9a-f-]\+\)$|\t\1|' |
tee "$LOCALDATA_RELEASEGROUPS_VIEW"
fi
exit 0 exit 0
fi fi
if [ "${1:-}" = "--internal-list-local-releases" ]; then if [ "${1:-}" = "--internal-list-local-releases" ]; then
if ! cat "$LOCALDATA_RELEASES_VIEW" 2>/dev/null; then
list_releases | list_releases |
while IFS= read -r rid; do while IFS= read -r rid; do
mb_release "$rid" | $JQ -r '[ mb_release "$rid" | $JQ -r '[
@@ -379,6 +389,7 @@ if [ "${1:-}" = "--internal-list-local-releases" ]; then
done | done |
awk \ awk \
-F "\t" \ -F "\t" \
-v file_local_releases="${LOCALDATA_RELEASES:-}" \
-v release_official="$FORMAT_STATUS_OFFICIAL" \ -v release_official="$FORMAT_STATUS_OFFICIAL" \
-v release_promotion="$FORMAT_STATUS_PROMO" \ -v release_promotion="$FORMAT_STATUS_PROMO" \
-v release_bootleg="$FORMAT_STATUS_BOOTLEG" \ -v release_bootleg="$FORMAT_STATUS_BOOTLEG" \
@@ -390,11 +401,14 @@ if [ "${1:-}" = "--internal-list-local-releases" ]; then
-v release_format_title_artist="$RV_TITLE_ARTIST" \ -v release_format_title_artist="$RV_TITLE_ARTIST" \
-v release_format_title="$RV_TITLE" \ -v release_format_title="$RV_TITLE" \
-v release_format_artist="$RV_ARTIST" \ -v release_format_artist="$RV_ARTIST" \
-v format_local="$FORMAT_LOCAL" \
"$AWK_RELEASES" | "$AWK_RELEASES" |
sort -n -r | sort -n -r |
cut -d "$(printf '\t')" -f 2- | cut -d "$(printf '\t')" -f 2- |
column -t -s "$(printf '\t')" | column -t -s "$(printf '\t')" |
sed 's| \+\([0-9a-f-]\+\):\(.*$\)$|\t\1\t\2|' sed 's| \+\([0-9a-f-]\+\):\(.*$\)$|\t\1\t\2|' |
tee "$LOCALDATA_RELEASES_VIEW"
fi
exit 0 exit 0
fi fi
@@ -551,10 +565,14 @@ while true; do
$JQ -r 'map([.artist.id, .artist.type, .name] | join("\t")) | join("\n")' | $JQ -r 'map([.artist.id, .artist.type, .name] | join("\t")) | join("\n")' |
awk \ awk \
-F "\t" \ -F "\t" \
-v file_local_artists="${LOCALDATA_ARTISTS:-}" \
-v format_person="$AV_PERSON" \ -v format_person="$AV_PERSON" \
-v format_group="$AV_GROUP" \ -v format_group="$AV_GROUP" \
-v format_disambiguation="$AV_DISAMBIGUATION" \ -v format_disambiguation="$AV_DISAMBIGUATION" \
-v format_local="$FORMAT_LOCAL" \
"$AWK_ARTISTS" | "$AWK_ARTISTS" |
column -t -s "$(printf '\t')" |
sed 's| \+\([0-9a-f-]\+\)$|\t\1|' |
$FZF \ $FZF \
--no-clear \ --no-clear \
-1 \ -1 \
@@ -646,14 +664,12 @@ while true; do
;; ;;
"--albums") "--albums")
sel=$( sel=$(
$0 --internal-list-local-releases | $0 --internal-list-local-releasegroups |
$FZF \ $FZF \
--no-clear \ --no-clear \
--ansi \ --ansi \
--reverse \ --reverse \
--cycle \ --cycle \
--no-sort \
--query="$FORMAT_STATUS_OFFICIAL " \
--delimiter="\t" \ --delimiter="\t" \
--prompt="$SEARCH_PROMPT" \ --prompt="$SEARCH_PROMPT" \
--info="inline-right" \ --info="inline-right" \
@@ -673,9 +689,9 @@ while true; do
lns=$(echo "$sel" | wc -l) lns=$(echo "$sel" | wc -l)
key=$(echo "$sel" | head -1 | tail -1) key=$(echo "$sel" | head -1 | tail -1)
mid=$(echo "$sel" | head -2 | tail -1) mid=$(echo "$sel" | head -2 | tail -1)
[ "$lns" -eq 2 ] && [ ! "$key" ] && [ "$mid" ] && set -- "--release" "$mid" [ "$lns" -eq 2 ] && [ ! "$key" ] && [ "$mid" ] && set -- "--releasegroup" "$mid"
[ "$lns" -eq 2 ] && [ "$key" = "ctrl-h" ] && set -- "--select-artist" "$(mb_releasegroup "$2" | $JQ -r -c '."artist-credit"')" [ "$lns" -eq 2 ] && [ "$key" = "ctrl-h" ] && set -- "--albums"
[ "$lns" -eq 2 ] && [ "$key" = "ctrl-a" ] && set -- "--select-artist" "$(mb_release "$mid" | $JQ -r -c '."artist-credit"')" [ "$lns" -eq 2 ] && [ "$key" = "ctrl-a" ] && set -- "--select-artist" "$(mb_releasegroup "$mid" | $JQ -r -c '."artist-credit"')"
[ "$key" = "ctrl-c" ] && tput rmcup && exit 0 [ "$key" = "ctrl-c" ] && tput rmcup && exit 0
[ "$key" = "ctrl-q" ] && tput rmcup && exit 0 [ "$key" = "ctrl-q" ] && tput rmcup && exit 0
[ "$key" = "ctrl-/" ] && set -- "--search-album" [ "$key" = "ctrl-/" ] && set -- "--search-album"
@@ -688,7 +704,6 @@ while true; do
--no-clear \ --no-clear \
--ansi \ --ansi \
--reverse \ --reverse \
--no-sort \
--cycle \ --cycle \
--delimiter="\t" \ --delimiter="\t" \
--prompt="$SEARCH_PROMPT" \ --prompt="$SEARCH_PROMPT" \

View File

@@ -98,6 +98,9 @@ LOCALDATADIR="$HOME/.cache/$APP_NAME/local"
LOCALDATA_ARTISTS="$LOCALDATADIR/artists" LOCALDATA_ARTISTS="$LOCALDATADIR/artists"
LOCALDATA_RELEASEGROUPS="$LOCALDATADIR/releasegroups" LOCALDATA_RELEASEGROUPS="$LOCALDATADIR/releasegroups"
LOCALDATA_RELEASES="$LOCALDATADIR/releases" LOCALDATA_RELEASES="$LOCALDATADIR/releases"
LOCALDATA_ARTISTS_VIEW="$LOCALDATADIR/artists_view"
LOCALDATA_RELEASEGROUPS_VIEW="$LOCALDATADIR/releasegroups_view"
LOCALDATA_RELEASES_VIEW="$LOCALDATADIR/releases_view"
# Load local music # Load local music
load_local() { load_local() {

View File

@@ -23,8 +23,8 @@ AV_GROUP="${AV_GROUP:-"🧑‍🤝‍🧑 $CARTIST<<name>>$OFF"}"
AV_DISAMBIGUATION="${AV_DISAMBIGUATION:-"$CDISAMB(<<disambiguation>>)$OFF"}" AV_DISAMBIGUATION="${AV_DISAMBIGUATION:-"$CDISAMB(<<disambiguation>>)$OFF"}"
# Release group view # Release group view
RGV_RELEASE="${RGV_RELEASE:-"${CTITLE}<<title>>"}" RGV_RELEASE="${RGV_RELEASE:-"${CTITLE}<<title>>$OFF"}"
RGV_RELEASE_W_ARTIST="${RGV_RELEASE_W_ARTIST:-"${CTITLE}<<title>> — ${CARTIST}<<artist>>"}" RGV_RELEASE_W_ARTIST="${RGV_RELEASE_W_ARTIST:-"${CTITLE}<<title>>$OFF${CARTIST}<<artist>>$OFF"}"
RGV_YEAR="${RGV_YEAR:-"${CYEAR}(<<year>>)$OFF"}" RGV_YEAR="${RGV_YEAR:-"${CYEAR}(<<year>>)$OFF"}"
# Types # Types
@@ -34,7 +34,7 @@ FORMAT_TYPE_SINGLE="${FORMAT_TYPE_SINGLE:-"SI 🎶"}"
FORMAT_TYPE_BROADCAST="${FORMAT_TYPE_BROADCAST:-"BR 📻"}" FORMAT_TYPE_BROADCAST="${FORMAT_TYPE_BROADCAST:-"BR 📻"}"
FORMAT_TYPE_OTHER="${FORMAT_TYPE_OTHER:-"OT ❔"}" FORMAT_TYPE_OTHER="${FORMAT_TYPE_OTHER:-"OT ❔"}"
FORMAT_TYPE_HAS_SECONDARY="${FORMAT_TYPE_HAS_SECONDARY:-"%s☼"}" FORMAT_TYPE_HAS_SECONDARY="${FORMAT_TYPE_HAS_SECONDARY:-"%s☼"}"
FORMAT_TYPE_SECONDARY="${FORMAT_TYPE_SECONDARY:-"${CNOTE}[☼: %s]"}" FORMAT_TYPE_SECONDARY="${FORMAT_TYPE_SECONDARY:-"${CNOTE}[☼: %s]$OFF"}"
FORMAT_TYPE_SECONDARY_COMPILATION="${FORMAT_TYPE_SECONDARY_COMPILATION:-"🧩 compilation"}" FORMAT_TYPE_SECONDARY_COMPILATION="${FORMAT_TYPE_SECONDARY_COMPILATION:-"🧩 compilation"}"
FORMAT_TYPE_SECONDARY_SOUNDTRACK="${FORMAT_TYPE_SECONDARY_SOUNDTRACK:-"🎬 soundtrack"}" FORMAT_TYPE_SECONDARY_SOUNDTRACK="${FORMAT_TYPE_SECONDARY_SOUNDTRACK:-"🎬 soundtrack"}"
FORMAT_TYPE_SECONDARY_SPOKENWORD="${FORMAT_TYPE_SECONDARY_SPOKENWORD:-"📖 spokenword"}" FORMAT_TYPE_SECONDARY_SPOKENWORD="${FORMAT_TYPE_SECONDARY_SPOKENWORD:-"📖 spokenword"}"
@@ -66,10 +66,10 @@ FORMAT_STATUS_EXPUNGED="${FORMAT_STATUS_EXPUNGED:-"🧹 expunged"}"
FORMAT_STATUS_CANCELLED="${FORMAT_STATUS_CANCELLED:-"❌ cancelled"}" FORMAT_STATUS_CANCELLED="${FORMAT_STATUS_CANCELLED:-"❌ cancelled"}"
# Release view # Release view
RV_FORMAT="<<status>>\t${CXXX}<<tracks>> tracks\t<<media>>\t${CYEAR}<<year>>\t<<country>>\t${CARTIST}<<label>>$OFF" RV_FORMAT="<<status>>\t${CXXX}<<tracks>> tracks\t<<media>>$OFF\t${CYEAR}<<year>>\t<<country>>$OFF\t${CARTIST}<<label>>$OFF"
RV_TITLE_ARTIST="${FAINT}as ${CTITLE}<<title>> by ${FAINT}${CARTIST}<<artist>>$OFF" RV_TITLE_ARTIST="${FAINT}as ${CTITLE}<<title>>$OFF by ${FAINT}${CARTIST}<<artist>>$OFF"
RV_TITLE="${FAINT}as ${CTITLE}<<title>>$OFF" RV_TITLE="${FAINT}as ${CTITLE}<<title>>$OFF"
RV_ARTIST="${FAINT}by ${CARTIST}<<artist>>$OFF" RV_ARTIST="${FAINT}by ${CARTIST}<<artist>>$OFF"
# Recording view # Recording view
REC_FORMAT="${CNOTE}${FAINT}<<med>>\t${CNOTE}<<nr>>\t$OFF${CTITLE}<<title>>\t${CARTIST}<<artist>>\t${CXXX}<<duration>>$OFF" REC_FORMAT="${CNOTE}${FAINT}<<med>>\t${CNOTE}<<nr>>$OFF\t${CTITLE}<<title>>\t${CARTIST}<<artist>>\t${CXXX}<<duration>>$OFF"