Skip to content
/ lure Public

Display your currently playing Last.fm, ListenBrainz (and others) track in your Revolt status!

License

Notifications You must be signed in to change notification settings

catuhana/lure

Repository files navigation

lure

CI Status CD Status Latest Release

Lure is an improved fork of lr, a small process that sets the currently playing track on Last.fm, ListenBrainz (and other future platforms, PRs welcome!) as Revolt user status.

Warning

Version 1 contains big configuration changes. If you were on previous versions, check configuration section.

Installation

Important

Lure is tested on Linux and Windows, and is expected to work on macOS too.

cargo install --git https://github.com/catuhana/lure

Or if you'd want to use an container image (Docker, Podman, etc.), you can pull the image from GitHub Container Registry.

docker pull ghcr.io/catuhana/lure:latest

Tip

Container images support AMD64 and ARM64 architectures.

Running

Important

Reading the configuration first is highly recommended.

To run lure, run:

lure start

Or using a container management tool:

docker/podman run -v $(pwd)/config.yaml:/app/config.yaml:ro lure:latest

Or on NixOS:

{
  inputs = {
+    lure = {
+      url = "github:catuhana/lure";
+      inputs.nixpkgs.follows = "nixpkgs";
+    };
  };

  modules = [
+    lure.nixosModules.default
+    {
+      # Check `module.nix` file for all available options.
+      services.lure = {
+        enable = true;
+        useService = "listenbrainz";
+
+        services.listenbrainz.username = "<username>";
+
+        revolt.session_token = ./<path>;
+      };
+    }
  ];
}

Tip

By default, lure logs useful information to the console. If you'd want to see other log levels, use the LURE_LOG environment variable. Check EnvFilter documentation from tracing-subscriber for more information.

export LURE_LOG="lure=trace" # log trace level logs only from lure
export LURE_LOG="trace" # log trace level logs from every library used that supports it
# for container management tools, use `-e LURE_LOG=` option

Configuration

Lure uses a YAML configuration file and environment variables for configuration. Check the sample configuration file as a reference, as it contains important information for every option (including environment variables).

To generate an example configuration file, run:

lure config generate # prints to the stdout
lure config generate >config.yaml # creates a file

Container Management Tools

If you're using any container management tools, you can either mount the host configuration file to the container or use environment variables. The volume for the app and its configuration file is /app. Refer to the run section for example.

Services (Features)

Lure currently has two service features and, they're enabled by default: LastFM and ListenBrainz. PRs for adding new platforms is very welcome.

Tip

If you'd like to only enable the service you're using, you can pass --no-default-features and --features services-<platform> to the install command above, <platform> being the lowercase platform string. To see all exact feature names, see Cargo.toml