bug added by ~aleteoryx on ~aleteoryx/scrobble.observer
Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer
could've sworn this was fixed
optimization added by ~aleteoryx on ~aleteoryx/scrobble.observer
Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer
Of the crates currently relied on, the following appear too feature-packed should be replaced with simpler internal code, to reduce binary size and external dependency count.
- duration-str
- urlencoding
Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer
Support for a limited form of (optional) watermaking. It would be up to the themes to include it.
#Query Parameters
?watermark
- specifies opting-in/out to the watermark.#Config Entries
LFME_WATERMARK_DEFAULT: 0|1
- enables the watermark if1
. If1
, ?watermark disables the watermark.LFME_WATERMARK_TEXT: string
- should contain the name of the specific instance, or a tagline.LFME_WATERMARK_IMG: string
- should contain a link to an image. The rendered size of this image is at the discretion of a given theme, but it should be around 32x32-64x64, and have an aspect ratio no greater than 1:2.LFME_WATERMARK_URL: string
- should contain a link to the host, or whoever else the admin wishes.#Context Members
watermark: object
- null, unless(LFME_WATERMARK_TEXT || LFME_WATERMARK_IMG || LFME_WATERMARK_URL) && (?watermark XOR LFME_WATERMARK)
. Should be interpreted as whether to render a watermark.watermark.text
=LFME_WATERMARK_TEXT
- defaults tolfm_embed
.watermark.img
=LFME_WATERMARK_IMG
- defaults to null.watermark.url
=LFME_WATERMARK_URL
- defaults to null.All that is guaranteed if
watermark != null
is the presence ofwatermark.text
, so all themes should be able to fallback to text. Image support should be considered optional for themes. Linking support is mandatory for themes.It is not an error to specify a default-enabled watermark with no possible contents, as the watermark object will simply not be present. A warning should be output on startup.
feature - new platform added by ~aleteoryx on ~aleteoryx/scrobble.observer
Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer
Extra services should be handled transparently to the end-user. In the wizard, they should be some sort of enum (e.g. drop-down), and in the actual request they should be selected with a single option. Wiring the services together is on the admin.
With that, I propose the following interface:
#Config Entries
LFME_BACKEND_DEFAULT: string
: specifies a default backend for /user/ requests.LFME_BACKEND_ADDITIONAL_GNUKEBOX: string,*
: specifies a set of additional domains supporting the old libre.fm/gnukebox API, assuming i can track down its documentation.LFME_BACKEND_ADDITIONAL_LISTENBRAINZ: string,*
: specifies a set of additional domains supporting the listenbrainz API.LFME_BACKEND_ADDITIONAL_AUDIOSCROBBLER: string,*
: specifies a set of additional domains supporting the last.fm API.LFME_BACKEND_ADDITIONAL_HACIENDA: string,*
: specifies a set of additional domains supporting the hacienda API, when documentation for it is released.#Query Parameters
?backend=(last.fm|libre.fm|listenbrainz.com|{LFME_BACKEND_ADDITIONAL_*})
: the first 3 will be builtin, although it will only be mandatory to specify API keys for one, plus the keys for$LFME_BACKEND_DEFAULT
#Context Members
user.service
: never nulluser.service.type
:(audioscrobbler|listenbrainz|gnukebox|hacienda)
user.service.domain
: the string for the service's domain.
Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer
Currently, the cache system makes no distinction between types of errors, meaning that persistent backend issues (e.g. lfm serving bad JSON) do not get cached, and potentially result in extra requests.
This should be pretty trivial to fix, by just changing the type stored in the caches.