Skip to content

Discord Rich Presence for Navidrome

License

zeroquinc/NavRPC

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Navidrome Discord Rich Presence (NavRPC) 🎧

NavRPC is a lightweight, optimized Python script that updates your Discord status to display the song currently playing on your Navidrome server. It features an integrated Imgur cache and intelligent image optimization to ensure album art displays correctly on Discord.

📷 Example

d32eceac-14c5-4b3d-bfbb-943d5f62f748
33077796-a82b-4eac-a379-02b96434977a

✨ Features

  • Subsonic API Polling: Connects directly to the Navidrome API to fetch the current track.
  • Intelligent Caching: Uploads and caches album art (via Imgur) locally.
  • Resource Friendly: Optimized for low CPU/RAM usage, ideal for running on a server, NAS, or Raspberry Pi.
  • Timestamp Accuracy: Calculates track start and end times to display the remaining time accurately. Note: Can be inaccurate.

🚀 Setup

1. Prerequisites

You need Python 3.8+ installed on your system.

2. Installation

  1. Clone the repository:

    git clone [https://github.com/zeroquinc/navrpc.git](https://github.com/zeroquinc/navrpc.git)
    cd navrpc
  2. Install dependencies:

    pip install -r requirements.txt

3. Configuration

You must set up your API keys and Navidrome server details.

  1. Create the config file:

    cp config.yaml.example config.yaml
  2. Edit config.yaml and fill in the required fields:

    Section Key Description
    navidrome base_url The URL to your Navidrome REST endpoint (e.g., http://192.168.0.150:4533/rest).
    username Your Navidrome username.
    password Your Navidrome password.
    integration imgur_client_id Required. Get a free client ID from Imgur's API page.
    discord_client_id Required. Your Discord Application ID. MUST BE QUOTED.
    discord_asset_name Optional. The name of a custom asset uploaded to your Discord App (e.g., a Navidrome logo). Used as a fallback if album art fails.

    ⚠️ Important: Quote the Discord Client ID Ensure your discord_client_id is enclosed in quotes to be read as a string:

    integration:
      discord_client_id: '11907920212632236732'

⚙️ Usage

Running Manually

Execute the entry point script from the project root:

python run.py

About

Discord Rich Presence for Navidrome

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages