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.
- 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.
You need Python 3.8+ installed on your system.
-
Clone the repository:
git clone [https://github.com/zeroquinc/navrpc.git](https://github.com/zeroquinc/navrpc.git) cd navrpc -
Install dependencies:
pip install -r requirements.txt
You must set up your API keys and Navidrome server details.
-
Create the config file:
cp config.yaml.example config.yaml
-
Edit
config.yamland fill in the required fields:Section Key Description navidromebase_urlThe URL to your Navidrome REST endpoint (e.g., http://192.168.0.150:4533/rest).usernameYour Navidrome username. passwordYour Navidrome password. integrationimgur_client_idRequired. Get a free client ID from Imgur's API page. discord_client_idRequired. Your Discord Application ID. MUST BE QUOTED. discord_asset_nameOptional. 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 yourdiscord_client_idis enclosed in quotes to be read as a string:integration: discord_client_id: '11907920212632236732'
Execute the entry point script from the project root:
python run.py