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.
npm i -g yarn to install yarn. Next, run
yarn add global gulp-cli and
yarn to install Descent's dependencies.
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
DESCENT_PORT environment variable. It's recommended to use a
proxy, such as NGINX, in front of Descent's server.
/now 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
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
environment variable, and your client secret as the
Philips Hue Lights
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
environment variable, your client ID as the
HUE_CLIENT environment variable,
and your client secret as the
HUE_SECRET environment variable.
To configure the background, weather, and time displays, visit
/now/app/config. Dark Sky can
automatically determine weather units, but OpenWeatherMap cannot, so Descent
defaults to imperial units unless otherwise specified.
Descent Configuration Import
You can import settings through a POST request to
/now/app/config/set. Each post
parameter correponds to a cookie. Valid parameters and values are as follows:
Default background image
defaultBackground: any valid image URL
Date/time 24-hour display
Date/time weekday display
Date/time seconds display
User to redirect to
lastUser: any valid Last.fm username
Weather display enabled
Date/time display enabled
Extended information display enabled
Phillips Hue Configuration
To enable Phillips Hue control, visit
/now/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
If Descent is hosted using HTTPS, users must instruct their browsers to allow loading insecure (HTTP) content for the Descent website. This is because the Hue API can only be accessed via HTTP. Users are informed of this on the configuration page.