Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/JasonPuglisi/descent
Elegant now playing display for Last.fm showing song metadata and local weather.
https://github.com/JasonPuglisi/descent
dashboard hud kiosk lastfm weather
Last synced: 12 days ago
JSON representation
Elegant now playing display for Last.fm showing song metadata and local weather.
- Host: GitHub
- URL: https://github.com/JasonPuglisi/descent
- Owner: JasonPuglisi
- License: mit
- Created: 2016-02-17T01:37:29.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-09-06T20:44:22.000Z (2 months ago)
- Last Synced: 2024-09-07T00:09:51.854Z (2 months ago)
- Topics: dashboard, hud, kiosk, lastfm, weather
- Language: JavaScript
- Homepage: https://descent.live
- Size: 1.11 MB
- Stars: 120
- Watchers: 6
- Forks: 21
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Descent
[![Deploy to GCP App Engine](https://github.com/JasonPuglisi/descent/actions/workflows/deploy-app-engine.yaml/badge.svg?branch=main)](https://github.com/JasonPuglisi/descent/actions/workflows/deploy-app-engine.yaml)
Elegant now playing display for Last.fm showing song metadata and local weather.
## Overview
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.
## Usage
Ensure you have recent versions of [Node.js](https://nodejs.org/en/) and
[npm](https://www.npmjs.com/) installed.Run `npm i -g yarn` to install [yarn](https://yarnpkg.com/en/). 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](https://www.nginx.com/), in front of Descent's server.Navigate to [`/`](https://descent.live/) to use Descent.
## API Requirements
### Weather
Weather is powered by the [Dark Sky API](https://darksky.net/dev/), or the
[OpenWeatherMap API](https://openweathermap.org/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.### Spotify Images
Album cover and artist images and provided by the
[Spotify Web API](https://beta.developer.spotify.com/documentation/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.### Philips Hue Lights
Hue lights are controlled by the
[Philips Hue API](https://developers.meethue.com/). 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.### Last.fm Rate Limiting
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.## User Preferences
### Descent Configuration
To configure the background, weather, and time displays, visit
[`/app/config`](https://descent.live/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
[`/app/config/set`](https://descent.live/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`### Phillips Hue Configuration
To enable Phillips Hue control, visit
[`/app/hue`](https://descent.live/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.