From 18d3fdd67f63c0a0fe7052ce8b4c2d5ce966cd6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luk=C3=A1=C5=A1=20Kucharczyk?= Date: Fri, 16 Jan 2026 11:49:03 +0100 Subject: [PATCH] add beet_add_genres script --- scripts/beet_add_genres.fish | 44 ++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100755 scripts/beet_add_genres.fish diff --git a/scripts/beet_add_genres.fish b/scripts/beet_add_genres.fish new file mode 100755 index 0000000..a5886d0 --- /dev/null +++ b/scripts/beet_add_genres.fish @@ -0,0 +1,44 @@ +#!/usr/bin/env fish + +# Ensure we have the required arguments +if test (count $argv) -lt 2 + echo "Usage: script.fish " + exit 1 +end + +set user_genres $argv[1] +set query $argv[2..] + +echo "User-supplied genre list is '$user_genres'." +echo "Database query is '$query'" + +# Get the current genres from beets +set beet_output (beet list -af '$genre' $query) + +set query_lines (string split0 $beet_output) + +if test (count $query_lines) -gt 1 + echo "Database query has to be a single line" + #exit 1 +end + +function list_merge_sort + string split "\n" (echo -e (string join "\n" $argv) | sort) +end + +function list_merge_unique + string split "\n" (echo -e (string join "\n" $argv) | sort -u) +end + +set -l current_genres (string split ', ' $beet_output) +set -l current_genres_count (count $current_genres) +echo "Current genres ($current_genres_count): $(string join ", " $(list_merge_sort $current_genres))" +set -l additional_genres (string split ', ' $user_genres) +echo "Additional genres ($(count $additional_genres)): $(string join ", " $(list_merge_sort $additional_genres))" + +set -l combined_genres (list_merge_unique $current_genres $additional_genres) +set -l combined_genres_count (count $combined_genres) +echo "Combined genres ($combined_genres_count): $(string join ", " $combined_genres)" +echo "Unique new genres: $(math $combined_genres_count - $current_genres_count)" + +beet modify -a genre="$(string join ", " $combined_genres)" $query