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