1
0

add beet_add_genres script

This commit is contained in:
2026-01-16 11:49:03 +01:00
parent 6d185c2324
commit 18d3fdd67f
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env fish
# Ensure we have the required arguments
if test (count $argv) -lt 2
echo "Usage: script.fish <user_genres> <query>"
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