~aleteoryx/lfm_embed

ref: 5fd77ff702c214415390b145144c5d15331bc5bb lfm_embed/README.md -rw-r--r-- 3.1 KiB
5fd77ff7alyx ugh 1 year, 1 month ago

#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 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 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 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

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