5d04d2796bc4efb2c4ebdbe130f4033c214efb36
Media Download Dashboard
A dashboard for tracking SABnzbd downloads matched to Sonarr/Radarr activity by user, with user identification via Emby server sessions.
Features
- User Identification: Automatically identifies the current user from active Emby server sessions
- Download Tracking: Retrieves download details from SABnzbd
- Service Integration: Matches downloads to activity in Sonarr and Radarr
- User Tag Matching: Identifies requesting users from tags present against shows or movies
- Personalized Dashboard: Presents details of downloading shows/movies for the current user
Prerequisites
- Node.js (v14 or higher)
- npm
- SABnzbd instance
- Sonarr instance
- Radarr instance
- Emby instance
Installation
-
Clone the repository and navigate to the project directory
-
Install dependencies:
npm install
cd client && npm install
cd ..
- Copy the example environment file and configure your services:
cp .env.example .env
Edit .env with your service URLs and API keys:
PORT=3001
SABNZBD_URL=http://localhost:8080
SABNZBD_API_KEY=your_sabnzbd_api_key
SONARR_URL=http://localhost:8989
SONARR_API_KEY=your_sonarr_api_key
RADARR_URL=http://localhost:7878
RADARR_API_KEY=your_radarr_api_key
EMBY_URL=http://localhost:8096
EMBY_API_KEY=your_emby_api_key
Tagging Your Media
To enable user-specific download tracking, tag your shows and movies in Sonarr/Radarr:
- In Sonarr/Radarr, go to your series/movie settings
- Add a tag with the format:
user:username(e.g.,user:john) - Apply this tag to the series/movies you want to track for that user
The dashboard will match downloads to users based on these tags.
Usage
Start the development servers:
npm run dev
This will start:
- Backend server on
http://localhost:3001 - Frontend development server on
http://localhost:5173
Open your browser and navigate to http://localhost:5173
How It Works
- Session Detection: The dashboard connects to Emby to detect active user sessions
- User Identification: The current user is identified from their active Emby session
- Download Retrieval: SABnzbd queue and history are retrieved
- Activity Matching: Downloads are matched to Sonarr/Radarr queue and history
- Tag Matching: The user tag from the series/movie is extracted and matched to the current user
- Display: Only downloads matching the current user are displayed
API Endpoints
SABnzbd
GET /api/sabnzbd/queue- Get current queueGET /api/sabnzbd/history- Get download history
Sonarr
GET /api/sonarr/queue- Get Sonarr queueGET /api/sonarr/history- Get Sonarr historyGET /api/sonarr/series- Get all series with tagsGET /api/sonarr/series/:id- Get specific series details
Radarr
GET /api/radarr/queue- Get Radarr queueGET /api/radarr/history- Get Radarr historyGET /api/radarr/movies- Get all movies with tagsGET /api/radarr/movies/:id- Get specific movie details
Emby
GET /api/emby/sessions- Get active sessionsGET /api/emby/users- Get all usersGET /api/emby/users/:id- Get specific user detailsGET /api/emby/session/:sessionId/user- Get user from session
Dashboard
GET /api/dashboard/user-downloads/:sessionId- Get downloads for current userGET /api/dashboard/user-summary- Get download summary for all users
Production Build
Build the frontend for production:
npm run client:build
Start the production server:
npm run server:start
The frontend will be served from the backend server.
Troubleshooting
- "Failed to fetch Emby sessions": Ensure Emby is running and the API key is correct
- "No downloads found": Ensure your media is tagged with
user:usernameformat - Download not showing: Check that the download name matches between SABnzbd and Sonarr/Radarr
License
MIT
Description
sofarr is a personal media download dashboard that aggregates and displays real-time download progress from all your media automation services. Named for the experience of checking what has downloaded "so far" while you wait comfortably on your "sofa" for Sonarr, Radarr, and your download clients to do their thing!
Releases
15
sofarr v1.3.1
Latest
Languages
JavaScript
85.2%
CSS
11.4%
HTML
2.5%
Dockerfile
0.9%