A web app that shows your Tautulli library sorted by last played and lets you bulk-remove items from Overseerr, Radarr, Sonarr, Lidarr, and Tautulli in one click.
- Pulls library media from Tautulli, sorted by last played (oldest first)
- Click any column header to sort by title, year, added date, last played, play count, size, or requested by
- Shows the Overseerr requestor for each item when available
- Select one or more items and hit Remove Selected
- For each item the app will:
- Remove the request and clear media data in Overseerr
- Delete the movie/show/artist (and files on disk) from all configured Radarr, Sonarr, or Lidarr instances
- Purge play history and media cache from Tautulli
Items whose Plex metadata can no longer be resolved (e.g. removed from Plex but still cached in Tautulli) will still have their Tautulli history and cache cleaned up — the Overseerr and *arr steps are gracefully skipped.
cd cleaner
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Edit .env with your API keys and URLs| Variable | Description |
|---|---|
TAUTULLI_URL |
Tautulli base URL (e.g. http://localhost:8181) |
TAUTULLI_API_KEY |
Tautulli API key (Settings > Web Interface) |
OVERSEERR_URL |
Overseerr base URL (e.g. http://localhost:5055) |
OVERSEERR_API_KEY |
Overseerr API key (Settings > General) |
RADARR_1_URL |
Primary Radarr base URL |
RADARR_1_API_KEY |
Primary Radarr API key |
RADARR_1_NAME |
Display name (e.g. Radarr) |
RADARR_2_URL |
Secondary Radarr base URL (leave blank to disable) |
RADARR_2_API_KEY |
Secondary Radarr API key |
RADARR_2_NAME |
Display name (e.g. Radarr 4K) |
SONARR_1_URL |
Primary Sonarr base URL |
SONARR_1_API_KEY |
Primary Sonarr API key |
SONARR_1_NAME |
Display name (e.g. Sonarr) |
SONARR_2_URL |
Secondary Sonarr base URL (leave blank to disable) |
SONARR_2_API_KEY |
Secondary Sonarr API key |
SONARR_2_NAME |
Display name (e.g. Sonarr 4K) |
LIDARR_1_URL |
Primary Lidarr base URL |
LIDARR_1_API_KEY |
Primary Lidarr API key |
LIDARR_1_NAME |
Display name (e.g. Lidarr) |
LIDARR_2_URL |
Secondary Lidarr base URL (leave blank to disable) |
LIDARR_2_API_KEY |
Secondary Lidarr API key |
LIDARR_2_NAME |
Display name (e.g. Lidarr 4K) |
Leave any _URL blank to skip that instance.
python app.pycd docker
# Edit docker-compose.yaml with your API keys and URLs
docker compose up -dOpen http://localhost:5000 in your browser.
- Select a library from the dropdown and click Load
- Items are sorted by last played (oldest first) — stale content floats to the top
- The Requested By column shows who originally requested the item in Overseerr
- Check the items you want to remove
- Click Remove Selected, confirm, and the app handles the rest
The library type (movie vs show vs artist) determines whether Radarr, Sonarr, or Lidarr instances are used for deletion. Overseerr removal is skipped for music libraries since Overseerr does not manage music requests.
MIT
