From e826ffb19ca50b0de25cf3ec4003309758828156 Mon Sep 17 00:00:00 2001 From: Profpatsch Date: Fri, 13 Sep 2024 15:08:31 +0200 Subject: [PATCH] feat(users/Profpatsch): add lyric Change-Id: I3171d19f1cd550ef22a3a7e851f9d27d3bf34949 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12476 Reviewed-by: Profpatsch Tested-by: BuildkiteCI --- users/Profpatsch/lyric.nix | 45 +++++++++++++++++++++++++++ users/Profpatsch/nix-home/default.nix | 5 ++- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 users/Profpatsch/lyric.nix diff --git a/users/Profpatsch/lyric.nix b/users/Profpatsch/lyric.nix new file mode 100644 index 000000000..962a62721 --- /dev/null +++ b/users/Profpatsch/lyric.nix @@ -0,0 +1,45 @@ +# Display lyrics for the given search string; +# search string can contain a substring of band name, album name, song title +# +# Use the database dump from https://lrclib.net/db-dumps and place it in ~/.cache/lyric/lrclib-db-dump.sqlite3 + +{ depot, pkgs, lib, ... }: + +let + bins = depot.nix.getBins pkgs.sqlite-utils [ "sqlite-utils" ] + // depot.nix.getBins pkgs.jq [ "jq" ]; + +in +depot.nix.writeExecline "lyric" { readNArgs = 1; } [ + "backtick" + "-E" + "cache" + [ depot.users.Profpatsch.xdg-cache-home ] + "pipeline" + [ + bins.sqlite-utils + "query" + "\${cache}/lyric/lrclib-db-dump.sqlite3" + '' + select + synced_lyrics, + source, + t.name, + t.artist_name + from + tracks_fts(:searchstring) tf + join tracks t on t.rowid = tf.rowid + join lyrics l on t.rowid = l.track_id + order by + t.id + limit + 1 + '' + "--param" + "searchstring" + "$1" + ] + bins.jq + "-r" + ".[0].synced_lyrics" +] diff --git a/users/Profpatsch/nix-home/default.nix b/users/Profpatsch/nix-home/default.nix index ee154c549..72c77122f 100644 --- a/users/Profpatsch/nix-home/default.nix +++ b/users/Profpatsch/nix-home/default.nix @@ -158,7 +158,10 @@ let name = "scripts/lw"; path = depot.users.Profpatsch.lorri-wait-for-eval; } - + { + name = "scripts/lyric"; + path = depot.users.Profpatsch.lyric; + } ] ++ (lib.pipe depot.users.Profpatsch.aliases [