Elegant now playing display for Last.fm showing song metadata and local weather.
Fetches now playing song information from Last.fm and displays album artwork along with local weather, time, and user info. Automatically hides the cursor after a few seconds of inactivity if the window is in focus.
Able to control colored Philips Hue lights based on prominent album art colors.
Ensure you have recent versions of Node.js and npm installed.
Run npm i -g yarn
to install yarn. Next, run
yarn global add gulp-cli
and yarn
to install Descent's dependencies.
Finally, run gulp build
to build Descent's static files, and yarn start
to
start Descent's server.
Descent's server listens on port 3000 by default, but this can be changed by
setting the DESCENT_PORT
environment variable. It's recommended to use a
proxy, such as NGINX, in front of Descent's server.
Navigate to /
to use Descent.
Weather is powered by the Dark Sky API, or the
OpenWeatherMap API. To use either, you will
need to provide an API key. For Dark Sky, set your key as the DARK_SKY_KEY
environment variable. For OpenWeatherMap, set your key as the
OPENWEATHERMAP_KEY
environment variable.
Dark Sky will take precedence, and OpenWeatherMap will be used if no Dark Sky API key is provided, or if a Dark Sky API request fails. Dark Sky provides more detailed weather summaries, but the officialy-hosted Descent uses OpenWeatherMap to avoid fees.
For users to enable weather display, they must allow the Descent website to access their location. This feature relies on HTML5 geolocation, so it may only work in some modern browsers.
Album cover and artist images and provided by the
Spotify Web API.
You will need to provide API authorization through a client ID and client
secret assigned by Spotify. Set your client ID as the SPOTIFY_CLIENT
environment variable, and your client secret as the SPOTIFY_SECRET
environment variable.
Hue lights are controlled by the
Philips Hue API. You must register an
application to provide a few required values. Set your app ID as the HUE_ID
environment variable, your client ID as the HUE_CLIENT
environment variable,
and your client secret as the HUE_SECRET
environment variable.
To avoid Last.fm rate limiting, you can adjust the API polling interval. Set
the LASTFM_POLL_INTERVAL
environment variable to an integer in milliseconds.
The default is 10000
(10 seconds), but a more reasonable value could be
5000
(5 seconds). If API calls in the browser start failing, and playing data
isn't loading, increase the interval.
To configure the background, weather, and time displays, visit
/app/config
. Dark Sky can
automatically determine weather units, but OpenWeatherMap cannot, so Descent
defaults to imperial units unless otherwise specified.
You can import settings through a POST request to
/app/config/set
. Each post
parameter correponds to a cookie. Valid parameters and values are as follows:
Scrobble mode
scrobbleMode
: lastScrobbled
, currentlyPlaying
Background type
background
: artist
, album
, transparent
, none
Background blurring
blur
: true
, false
Default background image
defaultBackground
: any valid image URL
Weather location latitude
latitude
: any valid latitude coordinate
Weather location longitude
longitude
: any valid longitude coordinate
Weather units
units
: imperial
, metric
Date/time 24-hour display
24hr
: true
, false
Date/time weekday display
weekday
: true
, false
Date/time seconds display
seconds
: true
, false
User to redirect to
lastUser
: any valid Last.fm username
Weather display enabled
weatherOn
: true
, false
Date/time display enabled
datetimeOn
: true
, false
Extended information display enabled
extendedOn
: true
, false
To enable Phillips Hue control, visit
/app/hue
and follow the setup
instructions. Light colors will be set according to the three most prominent
album art colors. If more than three lights are selected, the colors will be
reused.