Plex Watch History Analyzer with AI Recommendations for Sonarr and Radarr.
- Analyze Plex watch history from Tautulli
- AI-powered recommendations using OpenAI-compatible providers
- Auto-add recommendations to Sonarr (TV series) and Radarr (movies)
- Full web UI for configuration - no .env files needed
- All settings persisted in SQLite database
- Python 3.10+
- FastAPI
- httpx for async API calls
- Pydantic for data validation
- SQLAlchemy for SQLite database
- React 18
- TypeScript
- Vite
- Tailwind CSS
- Zustand for state management
# Create data directory for persistent storage
mkdir -p data
# Build and start
docker-compose build
docker-compose up -d
# Access at http://localhost:8000cd backend
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
# Start server
uvicorn main:app --reload --host 0.0.0.0 --port 8000cd frontend
npm install
npm run devAll settings are managed through the web UI at /settings:
- Tautulli - URL and API key for Plex watch history
- Sonarr - URL and API key for TV series management
- Radarr - URL and API key for movie management
- AI Provider - Base URL and API key (OpenAI-compatible)
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/settings | Get current settings |
| POST | /api/settings | Update settings |
| POST | /api/settings/test | Test connection |
| GET | /api/history | Get watch history |
| GET | /api/history/users | Get all users |
| POST | /api/recommendations/generate | Generate recommendations |
| POST | /api/recommendations/add | Add to Sonarr/Radarr |
Settings are stored in backend/data/settings.db. This file persists between container restarts when mounted as a volume.
MIT