aboutsummaryrefslogtreecommitdiffstats
path: root/src/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'src/README.md')
-rw-r--r--src/README.md69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/README.md b/src/README.md
new file mode 100644
index 0000000..e0eb966
--- /dev/null
+++ b/src/README.md
@@ -0,0 +1,69 @@
+# `lfm_embed`
+A simple webserver for rendering a last.fm embed.
+
+More specifically, this displays a simple webpage with info about your current or most recent last.fm scrobble.
+Its intended use is to be put on a personal site or whatever.
+
+## Usage
+`lfm_embed` is, as it stands, designed to use a reverse proxy.
+A future release may include HTTPS support, but currently, it will only listen on `localhost`, prohibiting it from public access.
+Once configured, a request of the form `http://localhost:9999/<last.fm username>` will render out an embed with the default theme.
+
+As it stands, there are no plans to support displaying users with private listen history.
+
+## Configuration
+Configuration should be done via the environment.
+`lfm_embed` also supports reading from a standard `.env` file.
+The following are the environment variables which `lfm_embed` understands.
+
+### `LMFE_API_KEY` (Required)
+Your last.fm API key. You'll need to create one [here](https://www.last.fm/api/account/create) for self-hosting.
+
+### `LFME_WHITELIST_MODE` (Default: open)
+The following(case-insensitive) values are supported:
+- `open`: Allow requests for all users.
+- `exclusive`: Only allow requests for users in `LFME_WHITELIST`, returning HTTP 403 for all others. `LFME_WHITELIST` _must_ be set if this mode is enabled.
+
+If the user requested has their listen history private, a 403 will be returned.
+
+### `LFME_WHITELIST` (Default: "")
+This is expected to be a sequence of comma-separated usernames.
+Leading/trailing whitespace will be stripped, and unicode is fully supported.
+
+### `LFME_WHITELIST_REFRESH` (Default: "1m")
+The amount of time to cache whitelisted user info for.
+It is interpreted as a sequence of `<num><suffix>` values, where `num` is a positive integer,
+and `suffix` is one of `y`,`mon`,`w`,`d`,`h`,`m`,`s`, `ms`, `µs`, or `ns`, each of which
+corresponds to a self-explanatory unit of time.
+For most practical applications, one should only use `m` and `s`, as caching your current listen for more than that time has the potential to omit most songs.
+Parsing is delegated to the [`duration_str`](https://docs.rs/duration-str/latest/duration_str/) crate, and further info may be found there.
+
+### `LFME_DEFAULT_REFRESH` (Default: "5m")
+The amount of time to cache non-whitelisted user info for.
+See `LFME_WHITELIST_REFRESH` for more info.
+
+### `LFME_PORT` (Default: 9999)
+The port to serve on locally.
+
+### `LFME_THEMES_DIR`
+If set, must be a valid path to a directory containing CSS files.
+They will be registered as themes on top of the builtin ones, with each theme's name being their filename minus the extension.
+Same-named themes will override builtin ones.
+
+### `LFME_LOG_LEVEL` (Default: Warn)
+The loglevel. This is actually parsed as an [`env_logger`](https://docs.rs/env_logger/latest/env_logger) filter string.
+Read the docs for more info.
+
+### `LFME_LOG_FILE`
+If set, logs will be written to the specified file. Otherwise, logs are written to `stderr`.
+
+## Example Configuration
+```dotenv
+LFME_API_KEY=0123456789abcdef0123456789abcdef
+LFME_LOG_LEVEL=error
+LFME_PORT=3000
+
+LFME_WHITELIST_REFRESH=30s
+LFME_WHITELIST_MODE=exclusive
+LFME_WHITELIST=a_precious_basket_case, realRiversCuomo, Pixiesfan12345
+```