Skip to content

`go-librespot` squeezebox-alike web frontend for small touchscreens

License

Notifications You must be signed in to change notification settings

stronk-dev/react-librespot-controller

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-librespot-controller

NPM NPM NPM NPM GitHub License Dependabot Updates

go-librespot squeezebox-alike web frontend for small touchscreens

Can be deployed standalone or imported as a NPM module.

The player is styled in the Tokyo Night colour scheme except for the album image, which emits an ambilight effect based on the colours in the image.

Install go-librespot

TODO: refer to OG source instructions + explain systemd script

[Unit]
Description=Spotify daemon
Documentation=https://github.com/devgianlu/go-librespot
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target

[Service]
WorkingDirectory=/home/pulseaudio/go-librespot
ExecStart=/usr/local/go/bin/go run /home/pulseaudio/go-librespot/cmd/daemon
Restart=always
RestartSec=12

[Install]
WantedBy=default.target

Config go-librespot

TODO: instructions to enable the API

Make sure to mention the bind address.

Standalone

Create a .env file and fill in you API endpoints

REACT_APP_API_BASE_URL=http://apollo:3678
REACT_APP_WS_URL=ws://apollo:3678/events

Run npm run test for local debugging. Run npm run static to generate the build folder.

TODO: build instructions

TODO: nginx instructions. Include HTTPS instructions with local IP whitelist (+hairpin nat)

TODO: OS instructions (auto-login, open browser, etc)

Module

First install the dependency:

npm install --save `@stronk-tech/react-librespot-controller`

Then import the component and fill in your API endpoints:

import MediaPlayer from "@stronk-tech/react-librespot-controller";
<MediaPlayer websocketUrl={"ws://apollo:3678/events"} apiBaseUrl={"http://apollo:3678"} hideOnDisconnect={false} />

Props

  • hideOnDisconnect: When true, the entire component will hide itself when there is no connection to the API endpoint. Otherwise it will display an error state.
  • websocketUrl: Full URL to the WebSocket endpoint of the go-librespot client.
  • apiBaseUrl: Full URL to the HTTP API endpoint of the go-librespot client.
  • kioskMode: When true, the component will fill the entire screen. Otherwise it will fill the available width and base the layout on the width only. It is recommended to leave this option false when importing the module into an existing webpage and to true when you are running the player standalone on a touch screen.
  • layout: Can be auto, default, widescreen, portrait. See the screenshots for how the layouts look like.

Screen shots

The player arranges itself based on the screen dimensions, with three possible layouts:

Default layout

Default

Widescreen

Wide1 Wide2 Wide3

Portrait

Portrait

About

`go-librespot` squeezebox-alike web frontend for small touchscreens

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published