3.9 KiB
3.9 KiB
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