gloaysa / whatsplaying

Display your album cover on Plexamp devices currently playing, or switch to your Album gallery and show off your album collection!
MIT License
27 stars 0 forks source link
cover-art media-player plex plex-media-server plexamp plexamp-headless

What's Playing

Welcome to What's Playing, a web application that brings your music cover art from Plex to live. This project is all about showcasing your currently playing album art in a visually appealing way, turning your browser into a vibrant music hub.

If your personal music collection don't have really good cover art, I created a python script that will download them for you. Please, read the instructions provided before using!

What's Playing is more than just a pretty face. It offers basic music controls like play, pause, volume adjustment, and track navigation. But these controls are designed to be unobtrusive, appearing only when you need them, so the album art always takes center stage.

One of the key features of What's Playing is the ability to browse through your Plex devices. Imagine a slide show where each slide is a different device, and you can flip through them with a simple swipe.

But that's not all. What's Playing also has an 'Album Library' mode. Picture another slide show, this time with all the albums in your library. The slides change automatically, and the albums are chosen at random, so you never know what's coming next. It's like your own personal music lottery!

The end goal of What's Playing is to be a dedicated music display in your living room or media room. It's a way to add a touch of style and interactivity to your music listening experience.

Features

What's Playing is packed with features designed to enhance your music listening experience:

Screenshots

Player with blurred background: What's Playing

Album Library: What's Playing

Displaying lyrics: What's Playing

Displaying controls (mouse hovering over the album art or touching the screen): What's Playing

Configurations

What's Playing can be customized to suit your needs by setting configurations. The first time you run the application, you will be prompted to enter your Plex token and other configurations.

Once you have set the configuration, if you ever want to change it again, navigate to /config in your browser.

You can optionally pass this configurations in a config.json file located in the root of the project. If you are using Docker, you can mount this file to /app/config.json.

docker run -v /path/to/config.json:/app/config.json -p 5000:5000 your-image-name

You will find an example down below if you are using docker-compose.

The config file should look like this

Running with Docker Compose

You can easily run the application using Docker Compose. I have published a Docker image of the application on the GitHub Container Registry, which you can use directly.

First, you need to create a docker-compose.yml file in your project directory with the following content:

version: '3.8'
services:
  whatsplaying:
    container_name: whatsplaying
    restart: unless-stopped
    image: ghcr.io/gloaysa/whatsplaying:latest
    environment:
      - PORT=5000 # default is 5000
    ports:
      - '5000:5000'
    volumes:
      - ./path_to_your_file/config.json:/app/config.json # optional

Roadmap

[x] - Properly handle errors.
[] - Libraries are hardcoded (only the first one is shown).
[] - Display playlists.
[] - Add the ability to start albums/playlists.
[x] - Display art from external services (tidal).
[x] - Allow configuration of Album library carousel time between slides.
[x] - Allow configuration to autostart Album library if nothing is playing for 5 seconds.

Development Guide

Available Scripts

In the project directory, you can run:

Serving with Nginx

After building the project with npm run build, you can serve it with Nginx. Here's a basic configuration you can use:

server {
    listen 3000;
    server_name localhost;

    location / {
        root /path/to/your/dist/folder;
        try_files $uri /index.html;
    }
}