~aleteoryx

Trackers

~aleteoryx/scrobble.observer

Last active 19 days ago

~aleteoryx/tclircc

Last active 19 days ago

~aleteoryx/tpl

Last active 22 days ago

~aleteoryx/foo

Last active a month ago

#7 replace empty image URLs with the default one 19 days ago

bug added by ~aleteoryx on ~aleteoryx/scrobble.observer

#7 replace empty image URLs with the default one 19 days ago

Ticket created by ~aleteoryx on ~aleteoryx/scrobble.observer

could've sworn this was fixed

#6 Reduce external crates a month ago

optimization added by ~aleteoryx on ~aleteoryx/scrobble.observer

#6 Reduce external crates a month ago

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

#5 Watermarking a month ago

feature - user added by ~aleteoryx on ~aleteoryx/scrobble.observer

#5 Watermarking a month ago

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 if 1. If 1, ?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 to lfm_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 of watermark.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.

#4 Infrastructure for additional services a month ago

feature - new platform added by ~aleteoryx on ~aleteoryx/scrobble.observer

#4 Infrastructure for additional services a month ago

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 null
  • user.service.type: (audioscrobbler|listenbrainz|gnukebox|hacienda)
  • user.service.domain: the string for the service's domain.

#3 Error Caching a month ago

optimization added by ~aleteoryx on ~aleteoryx/scrobble.observer

#3 Error Caching a month ago

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.