[](https://pypi.org/project/prunarr/)
[](https://www.python.org/downloads/)
[](LICENSE)
# PrunArr
**Automatically clean up your Radarr and Sonarr libraries based on what you've actually watched in Plex/Jellyfin (via Tautulli).**
Stop manually managing your media library. PrunArr removes watched content after a configurable period, checks streaming availability, and gives you complete control over what stays and what goes.
---
## Quick Start
```bash
# 1. Install
pip install prunarr
# 2. Configure (create config.yaml with your API keys)
curl -O https://raw.githubusercontent.com/haijeploeg/prunarr/main/config.example.yaml
mv config.example.yaml config.yaml
# Edit config.yaml with your API keys
# 3. Preview what would be removed
prunarr --config config.yaml movies remove --dry-run
# 4. Remove watched content (60+ days old by default)
prunarr --config config.yaml movies remove
prunarr --config config.yaml series remove
```
π **[Full Quick Start Guide β](docs/QUICK_START.md)**
---
## Why PrunArr?
**The Problem:**
- Your media library keeps growing
- You're running out of storage space
- Manually tracking what's been watched is tedious
- You don't know what's safe to remove
- There are Movies and Shows in your library that are also availble on streaming providers
**The Solution:**
PrunArr automates media cleanup by:
- β
Checking Tautulli to see what's been watched
- β
Removing content after your specified retention period
- β
Checking if content is available on streaming services
- β
Supporting user-based tracking for multi-user setups
- β
Providing safety features (dry-run, confirmations, previews)
**Perfect for:**
- People with limited storage space
- Multi-user Plex/Jellyfin servers
- Users of Overseerr request management
- Anyone tired of manual library cleanup
- Users who want to prioritize unique content over streamable content
---
## Key Features
### π― User-Based Tracking
Integrates with **Overseerr** to automatically track who requested what. Content is only removed when watched by the original requester.
```bash
prunarr movies remove --username "alice" --days-watched 30
```
π **[Tag System Guide β](docs/TAG_SYSTEM.md)**
### β° Flexible Retention Periods
Control exactly how long to keep watched content:
```bash
prunarr movies remove --days-watched 60 # Remove after 60 days
prunarr series remove --days-watched 90 # Keep series longer
```
### π¦ Size-Based Filtering
Target large files to free up space quickly:
```bash
prunarr movies list --min-filesize "5GB" --sort-by filesize --desc
prunarr movies remove --min-filesize "5GB" --days-watched 60
```
### π·οΈ Tag-Based Organization
Filter content by quality, genre, or any custom tags:
```bash
prunarr movies list --tag "4K" --tag "HDR"
prunarr movies remove --tag "Kids" --days-watched 14
prunarr movies remove --exclude-tag "Favorites"
```
### π¬ Streaming Provider Integration
Check if content is available on your streaming services via JustWatch:
```bash
# Remove watched movies available on streaming
prunarr movies remove --on-streaming --days-watched 30
# Keep unique content longer (not on streaming)
prunarr movies remove --not-on-streaming --days-watched 180
```
π **[Streaming Integration Guide β](docs/STREAMING.md)**
### π‘οΈ Safety-First Design
Multiple layers of protection:
- **Dry-run mode** - Preview changes before committing
- **Confirmation prompts** - Review what will be removed
- **User verification** - Only remove content watched by the requester
- **Detailed logging** - Track all operations with `--debug`
### π Rich Console Output
Beautiful, informative tables with:
- π’ Color-coded status (Watched, Partial, Unwatched)
- π Human-readable file sizes (MB, GB, TB)
- π
Last watched dates and days ago
- π JSON output option for automation
### β‘ Performance & Automation
- **Intelligent caching** - Minimize API calls
- **JSON output** - Machine-readable for scripts
- **Cron-ready** - Perfect for scheduled automation
- **Exit codes** - Proper status codes for monitoring
---
## Documentation
### Getting Started
- **[Installation Guide](docs/INSTALLATION.md)** - Install PrunArr via pip or from source
- **[Configuration Guide](docs/CONFIGURATION.md)** - Set up API keys and options
- **[Quick Start Guide](docs/QUICK_START.md)** - Get productive in minutes
- **[Command Reference](docs/COMMANDS.md)** - Complete command documentation
### Core Concepts
- **[Tag System](docs/TAG_SYSTEM.md)** - User tracking and content organization
- **[Streaming Integration](docs/STREAMING.md)** - JustWatch provider integration
- **[Advanced Features](docs/ADVANCED.md)** - Automation, scripting, and optimization
- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions
---
## Common Use Cases
### Weekly Cleanup Routine
```bash
# Preview and remove watched content
prunarr movies remove --days-watched 60 --dry-run
prunarr movies remove --days-watched 60
prunarr series remove --days-watched 90
```
### Free Up Space Quickly
```bash
# Target large files first
prunarr movies list --min-filesize "10GB" --sort-by filesize --desc
prunarr movies remove --min-filesize "5GB" --days-watched 30
```
### Smart Streaming-Based Cleanup
```bash
# Remove watched movies you can re-stream
prunarr movies remove --on-streaming --days-watched 30
# Keep unique content longer
prunarr movies remove --not-on-streaming --days-watched 180
```
### Multi-User Management
```bash
# List content by user
prunarr movies list --username "alice"
# User-specific cleanup
prunarr movies remove --username "bob" --days-watched 45
```
### Kids Content Fast Rotation
```bash
# Quick cleanup of kids content
prunarr movies remove --tag "Kids" --days-watched 14
prunarr series remove --tag "Kids" --days-watched 14
```
π **[More Examples β](docs/QUICK_START.md#common-workflows)**
---
## Requirements
- **Python 3.9 or higher**
- **Radarr** (for movies) and/or **Sonarr** (for TV shows)
- **Tautulli** (for watch history tracking)
---
## Deployment Options
### π¦ PyPI Installation (Recommended)
```bash
pip install prunarr
```
### π³ Docker
Run PrunArr in a container for isolated, portable deployments:
```bash
# Pull from GitHub Container Registry
docker pull ghcr.io/hploeg/prunarr:latest
# Run with Docker
docker run --rm \
-e RADARR_API_KEY="your-api-key" \
-e RADARR_URL="https://radarr.example.com" \
-e SONARR_API_KEY="your-api-key" \
-e SONARR_URL="https://sonarr.example.com" \
-e TAUTULLI_API_KEY="your-api-key" \
-e TAUTULLI_URL="https://tautulli.example.com" \
ghcr.io/hploeg/prunarr:latest movies list --limit 10
# Or use Docker Compose
docker-compose run --rm prunarr movies remove --dry-run
```
π **[Docker Deployment Guide β](docs/DOCKER.md)**
### βΈοΈ Kubernetes with Helm
Deploy to Kubernetes for automated, scheduled cleanups:
```bash
# Install from OCI registry
helm install prunarr oci://ghcr.io/hploeg/charts/prunarr \
--version 1.0.0 \
--set config.radarr.apiKey="your-api-key" \
--set config.radarr.url="https://radarr.example.com" \
--set config.sonarr.apiKey="your-api-key" \
--set config.sonarr.url="https://sonarr.example.com" \
--set config.tautulli.apiKey="your-api-key" \
--set config.tautulli.url="https://tautulli.example.com"
# Default: CronJob mode with daily cleanup at 2 AM (movies) and 3 AM (series)
```
**Features:**
- π Automated scheduling with Kubernetes CronJobs
- πΎ Persistent cache with PVC
- π Secret management for API keys
- π Resource limits and health checks
- π Easy rollbacks and updates
π **[Kubernetes Deployment Guide β](docs/KUBERNETES.md)**
---
## Installation
### From PyPI (Recommended)
```bash
pip install prunarr
```
### From Source
```bash
git clone https://github.com/haijeploeg/prunarr
cd prunarr
pip install -e .
```
π **[Full Installation Guide β](docs/INSTALLATION.md)**
---
## Configuration
1. **Create config file:**
```bash
curl -O https://raw.githubusercontent.com/haijeploeg/prunarr/main/config.example.yaml
mv config.example.yaml config.yaml
```
2. **Add your API keys:**
```yaml
radarr_api_key: "your-radarr-api-key"
radarr_url: "https://radarr.yourdomain.com"
sonarr_api_key: "your-sonarr-api-key"
sonarr_url: "https://sonarr.yourdomain.com"
tautulli_api_key: "your-tautulli-api-key"
tautulli_url: "https://tautulli.yourdomain.com"
```
3. **Test your config:**
```bash
prunarr --config config.yaml movies list --limit 5
```
π **[Full Configuration Guide β](docs/CONFIGURATION.md)**
---
## Overseerr Integration
PrunArr works seamlessly with Overseerr's "Tag Requests" feature:
1. In Overseerr, go to **Settings** β **Radarr/Sonarr**
2. Enable **"Tag Requests"**
3. That's it! PrunArr will automatically track who requested what
When users request content through Overseerr:
- Tags are automatically created (e.g., `"123 - john_doe"`)
- PrunArr matches usernames with Tautulli
- Content is only removed when watched by the original requester
π **[Tag System Guide β](docs/TAG_SYSTEM.md#automatic-tags-with-overseerr-recommended)**
---
## Command Overview
**Movies:**
```bash
prunarr movies list # List all movies
prunarr movies remove --dry-run # Preview removal
prunarr movies remove --days-watched 60 # Remove watched movies
```
**Series:**
```bash
prunarr series list # List all series
prunarr series get "Breaking Bad" # Get detailed info
prunarr series remove --days-watched 90 # Remove watched series
```
**History:**
```bash
prunarr history list --limit 20 # View watch history
```
**Streaming:**
```bash
prunarr providers list # List streaming providers
prunarr providers check "The Matrix" # Check availability
```
**Cache:**
```bash
prunarr cache init # Initialize cache
prunarr cache status # View cache stats
```
π **[Complete Command Reference β](docs/COMMANDS.md)**
---
## Contributing
Contributions are welcome! Please:
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Make your changes
4. Run tests (`make test`)
5. Format code (`make format`)
6. Commit (`git commit -m 'feat: add amazing feature'`)
7. Push (`git push origin feature/amazing-feature`)
8. Open a Pull Request
### Development Setup
```bash
git clone https://github.com/haijeploeg/prunarr
cd prunarr
python -m venv env
source env/bin/activate
pip install -e ".[dev]"
# Run tests
make test
# Format code
make format
# Run linting
make lint
```
---
## Support
- **Documentation**: [docs/](docs/)
- **Issues**: [GitHub Issues](https://github.com/haijeploeg/prunarr/issues)
- **Discussions**: [GitHub Discussions](https://github.com/haijeploeg/prunarr/discussions)
---
## License
Apache-2.0 License - See [LICENSE](LICENSE) file for details.
---
## Links
- **GitHub**: https://github.com/haijeploeg/prunarr
- **PyPI**: https://pypi.org/project/prunarr/
- **Issues**: https://github.com/haijeploeg/prunarr/issues
---
**Made with β€οΈ for the Plex/Jellyfin community**
*PrunArr is not affiliated with Radarr, Sonarr, Tautulli, Overseerr, Plex, or Jellyfin.*
Raw data
{
"_id": null,
"home_page": null,
"name": "prunarr",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": null,
"keywords": "radarr, sonarr, tautulli, media, automation, cleanup",
"author": null,
"author_email": "Haije Ploeg <ploeg.haije@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/11/04/130d34c336b925b6abcb16f8e29fe0285025b9d75705e96cc877c4c4a7cf/prunarr-1.1.0.tar.gz",
"platform": null,
"description": "[](https://pypi.org/project/prunarr/)\n[](https://www.python.org/downloads/)\n[](LICENSE)\n\n# PrunArr\n\n**Automatically clean up your Radarr and Sonarr libraries based on what you've actually watched in Plex/Jellyfin (via Tautulli).**\n\nStop manually managing your media library. PrunArr removes watched content after a configurable period, checks streaming availability, and gives you complete control over what stays and what goes.\n\n---\n\n## Quick Start\n\n```bash\n# 1. Install\npip install prunarr\n\n# 2. Configure (create config.yaml with your API keys)\ncurl -O https://raw.githubusercontent.com/haijeploeg/prunarr/main/config.example.yaml\nmv config.example.yaml config.yaml\n# Edit config.yaml with your API keys\n\n# 3. Preview what would be removed\nprunarr --config config.yaml movies remove --dry-run\n\n# 4. Remove watched content (60+ days old by default)\nprunarr --config config.yaml movies remove\nprunarr --config config.yaml series remove\n```\n\n\ud83d\udcd6 **[Full Quick Start Guide \u2192](docs/QUICK_START.md)**\n\n---\n\n## Why PrunArr?\n\n**The Problem:**\n- Your media library keeps growing\n- You're running out of storage space\n- Manually tracking what's been watched is tedious\n- You don't know what's safe to remove\n- There are Movies and Shows in your library that are also availble on streaming providers\n\n**The Solution:**\nPrunArr automates media cleanup by:\n- \u2705 Checking Tautulli to see what's been watched\n- \u2705 Removing content after your specified retention period\n- \u2705 Checking if content is available on streaming services\n- \u2705 Supporting user-based tracking for multi-user setups\n- \u2705 Providing safety features (dry-run, confirmations, previews)\n\n**Perfect for:**\n- People with limited storage space\n- Multi-user Plex/Jellyfin servers\n- Users of Overseerr request management\n- Anyone tired of manual library cleanup\n- Users who want to prioritize unique content over streamable content\n\n---\n\n## Key Features\n\n### \ud83c\udfaf User-Based Tracking\nIntegrates with **Overseerr** to automatically track who requested what. Content is only removed when watched by the original requester.\n\n```bash\nprunarr movies remove --username \"alice\" --days-watched 30\n```\n\n\ud83d\udcd6 **[Tag System Guide \u2192](docs/TAG_SYSTEM.md)**\n\n### \u23f0 Flexible Retention Periods\nControl exactly how long to keep watched content:\n\n```bash\nprunarr movies remove --days-watched 60 # Remove after 60 days\nprunarr series remove --days-watched 90 # Keep series longer\n```\n\n### \ud83d\udce6 Size-Based Filtering\nTarget large files to free up space quickly:\n\n```bash\nprunarr movies list --min-filesize \"5GB\" --sort-by filesize --desc\nprunarr movies remove --min-filesize \"5GB\" --days-watched 60\n```\n\n### \ud83c\udff7\ufe0f Tag-Based Organization\nFilter content by quality, genre, or any custom tags:\n\n```bash\nprunarr movies list --tag \"4K\" --tag \"HDR\"\nprunarr movies remove --tag \"Kids\" --days-watched 14\nprunarr movies remove --exclude-tag \"Favorites\"\n```\n\n### \ud83c\udfac Streaming Provider Integration\nCheck if content is available on your streaming services via JustWatch:\n\n```bash\n# Remove watched movies available on streaming\nprunarr movies remove --on-streaming --days-watched 30\n\n# Keep unique content longer (not on streaming)\nprunarr movies remove --not-on-streaming --days-watched 180\n```\n\n\ud83d\udcd6 **[Streaming Integration Guide \u2192](docs/STREAMING.md)**\n\n### \ud83d\udee1\ufe0f Safety-First Design\nMultiple layers of protection:\n- **Dry-run mode** - Preview changes before committing\n- **Confirmation prompts** - Review what will be removed\n- **User verification** - Only remove content watched by the requester\n- **Detailed logging** - Track all operations with `--debug`\n\n### \ud83d\udcca Rich Console Output\nBeautiful, informative tables with:\n- \ud83d\udfe2 Color-coded status (Watched, Partial, Unwatched)\n- \ud83d\udccf Human-readable file sizes (MB, GB, TB)\n- \ud83d\udcc5 Last watched dates and days ago\n- \ud83d\udd04 JSON output option for automation\n\n### \u26a1 Performance & Automation\n- **Intelligent caching** - Minimize API calls\n- **JSON output** - Machine-readable for scripts\n- **Cron-ready** - Perfect for scheduled automation\n- **Exit codes** - Proper status codes for monitoring\n\n---\n\n## Documentation\n\n### Getting Started\n- **[Installation Guide](docs/INSTALLATION.md)** - Install PrunArr via pip or from source\n- **[Configuration Guide](docs/CONFIGURATION.md)** - Set up API keys and options\n- **[Quick Start Guide](docs/QUICK_START.md)** - Get productive in minutes\n- **[Command Reference](docs/COMMANDS.md)** - Complete command documentation\n\n### Core Concepts\n- **[Tag System](docs/TAG_SYSTEM.md)** - User tracking and content organization\n- **[Streaming Integration](docs/STREAMING.md)** - JustWatch provider integration\n- **[Advanced Features](docs/ADVANCED.md)** - Automation, scripting, and optimization\n- **[Troubleshooting](docs/TROUBLESHOOTING.md)** - Common issues and solutions\n\n---\n\n## Common Use Cases\n\n### Weekly Cleanup Routine\n```bash\n# Preview and remove watched content\nprunarr movies remove --days-watched 60 --dry-run\nprunarr movies remove --days-watched 60\nprunarr series remove --days-watched 90\n```\n\n### Free Up Space Quickly\n```bash\n# Target large files first\nprunarr movies list --min-filesize \"10GB\" --sort-by filesize --desc\nprunarr movies remove --min-filesize \"5GB\" --days-watched 30\n```\n\n### Smart Streaming-Based Cleanup\n```bash\n# Remove watched movies you can re-stream\nprunarr movies remove --on-streaming --days-watched 30\n\n# Keep unique content longer\nprunarr movies remove --not-on-streaming --days-watched 180\n```\n\n### Multi-User Management\n```bash\n# List content by user\nprunarr movies list --username \"alice\"\n\n# User-specific cleanup\nprunarr movies remove --username \"bob\" --days-watched 45\n```\n\n### Kids Content Fast Rotation\n```bash\n# Quick cleanup of kids content\nprunarr movies remove --tag \"Kids\" --days-watched 14\nprunarr series remove --tag \"Kids\" --days-watched 14\n```\n\n\ud83d\udcd6 **[More Examples \u2192](docs/QUICK_START.md#common-workflows)**\n\n---\n\n## Requirements\n\n- **Python 3.9 or higher**\n- **Radarr** (for movies) and/or **Sonarr** (for TV shows)\n- **Tautulli** (for watch history tracking)\n\n---\n\n## Deployment Options\n\n### \ud83d\udce6 PyPI Installation (Recommended)\n\n```bash\npip install prunarr\n```\n\n### \ud83d\udc33 Docker\n\nRun PrunArr in a container for isolated, portable deployments:\n\n```bash\n# Pull from GitHub Container Registry\ndocker pull ghcr.io/hploeg/prunarr:latest\n\n# Run with Docker\ndocker run --rm \\\n -e RADARR_API_KEY=\"your-api-key\" \\\n -e RADARR_URL=\"https://radarr.example.com\" \\\n -e SONARR_API_KEY=\"your-api-key\" \\\n -e SONARR_URL=\"https://sonarr.example.com\" \\\n -e TAUTULLI_API_KEY=\"your-api-key\" \\\n -e TAUTULLI_URL=\"https://tautulli.example.com\" \\\n ghcr.io/hploeg/prunarr:latest movies list --limit 10\n\n# Or use Docker Compose\ndocker-compose run --rm prunarr movies remove --dry-run\n```\n\n\ud83d\udcd6 **[Docker Deployment Guide \u2192](docs/DOCKER.md)**\n\n### \u2638\ufe0f Kubernetes with Helm\n\nDeploy to Kubernetes for automated, scheduled cleanups:\n\n```bash\n# Install from OCI registry\nhelm install prunarr oci://ghcr.io/hploeg/charts/prunarr \\\n --version 1.0.0 \\\n --set config.radarr.apiKey=\"your-api-key\" \\\n --set config.radarr.url=\"https://radarr.example.com\" \\\n --set config.sonarr.apiKey=\"your-api-key\" \\\n --set config.sonarr.url=\"https://sonarr.example.com\" \\\n --set config.tautulli.apiKey=\"your-api-key\" \\\n --set config.tautulli.url=\"https://tautulli.example.com\"\n\n# Default: CronJob mode with daily cleanup at 2 AM (movies) and 3 AM (series)\n```\n\n**Features:**\n- \ud83d\udd50 Automated scheduling with Kubernetes CronJobs\n- \ud83d\udcbe Persistent cache with PVC\n- \ud83d\udd12 Secret management for API keys\n- \ud83d\udcca Resource limits and health checks\n- \ud83d\udd04 Easy rollbacks and updates\n\n\ud83d\udcd6 **[Kubernetes Deployment Guide \u2192](docs/KUBERNETES.md)**\n\n---\n\n## Installation\n\n### From PyPI (Recommended)\n```bash\npip install prunarr\n```\n\n### From Source\n```bash\ngit clone https://github.com/haijeploeg/prunarr\ncd prunarr\npip install -e .\n```\n\n\ud83d\udcd6 **[Full Installation Guide \u2192](docs/INSTALLATION.md)**\n\n---\n\n## Configuration\n\n1. **Create config file:**\n ```bash\n curl -O https://raw.githubusercontent.com/haijeploeg/prunarr/main/config.example.yaml\n mv config.example.yaml config.yaml\n ```\n\n2. **Add your API keys:**\n ```yaml\n radarr_api_key: \"your-radarr-api-key\"\n radarr_url: \"https://radarr.yourdomain.com\"\n sonarr_api_key: \"your-sonarr-api-key\"\n sonarr_url: \"https://sonarr.yourdomain.com\"\n tautulli_api_key: \"your-tautulli-api-key\"\n tautulli_url: \"https://tautulli.yourdomain.com\"\n ```\n\n3. **Test your config:**\n ```bash\n prunarr --config config.yaml movies list --limit 5\n ```\n\n\ud83d\udcd6 **[Full Configuration Guide \u2192](docs/CONFIGURATION.md)**\n\n---\n\n## Overseerr Integration\n\nPrunArr works seamlessly with Overseerr's \"Tag Requests\" feature:\n\n1. In Overseerr, go to **Settings** \u2192 **Radarr/Sonarr**\n2. Enable **\"Tag Requests\"**\n3. That's it! PrunArr will automatically track who requested what\n\nWhen users request content through Overseerr:\n- Tags are automatically created (e.g., `\"123 - john_doe\"`)\n- PrunArr matches usernames with Tautulli\n- Content is only removed when watched by the original requester\n\n\ud83d\udcd6 **[Tag System Guide \u2192](docs/TAG_SYSTEM.md#automatic-tags-with-overseerr-recommended)**\n\n---\n\n## Command Overview\n\n**Movies:**\n```bash\nprunarr movies list # List all movies\nprunarr movies remove --dry-run # Preview removal\nprunarr movies remove --days-watched 60 # Remove watched movies\n```\n\n**Series:**\n```bash\nprunarr series list # List all series\nprunarr series get \"Breaking Bad\" # Get detailed info\nprunarr series remove --days-watched 90 # Remove watched series\n```\n\n**History:**\n```bash\nprunarr history list --limit 20 # View watch history\n```\n\n**Streaming:**\n```bash\nprunarr providers list # List streaming providers\nprunarr providers check \"The Matrix\" # Check availability\n```\n\n**Cache:**\n```bash\nprunarr cache init # Initialize cache\nprunarr cache status # View cache stats\n```\n\n\ud83d\udcd6 **[Complete Command Reference \u2192](docs/COMMANDS.md)**\n\n---\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing-feature`)\n3. Make your changes\n4. Run tests (`make test`)\n5. Format code (`make format`)\n6. Commit (`git commit -m 'feat: add amazing feature'`)\n7. Push (`git push origin feature/amazing-feature`)\n8. Open a Pull Request\n\n### Development Setup\n\n```bash\ngit clone https://github.com/haijeploeg/prunarr\ncd prunarr\npython -m venv env\nsource env/bin/activate\npip install -e \".[dev]\"\n\n# Run tests\nmake test\n\n# Format code\nmake format\n\n# Run linting\nmake lint\n```\n\n---\n\n## Support\n\n- **Documentation**: [docs/](docs/)\n- **Issues**: [GitHub Issues](https://github.com/haijeploeg/prunarr/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/haijeploeg/prunarr/discussions)\n\n---\n\n## License\n\nApache-2.0 License - See [LICENSE](LICENSE) file for details.\n\n---\n\n## Links\n\n- **GitHub**: https://github.com/haijeploeg/prunarr\n- **PyPI**: https://pypi.org/project/prunarr/\n- **Issues**: https://github.com/haijeploeg/prunarr/issues\n\n---\n\n**Made with \u2764\ufe0f for the Plex/Jellyfin community**\n\n*PrunArr is not affiliated with Radarr, Sonarr, Tautulli, Overseerr, Plex, or Jellyfin.*\n",
"bugtrack_url": null,
"license": "Apache-2.0",
"summary": "Automated media library cleanup for Radarr and Sonarr based on Tautulli watch status",
"version": "1.1.0",
"project_urls": {
"Bug Reports": "https://github.com/hploeg/prunarr/issues",
"Documentation": "https://github.com/hploeg/prunarr#readme",
"Homepage": "https://github.com/hploeg/prunarr",
"Repository": "https://github.com/hploeg/prunarr"
},
"split_keywords": [
"radarr",
" sonarr",
" tautulli",
" media",
" automation",
" cleanup"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "c6ff6a7938858cc1db90a139ab1c83de64e27b7a0b6db3d9262d384ee91d7d76",
"md5": "4efa3db71e585142664f80dd045f39a4",
"sha256": "93dd2a41fb744df00bd35b9a1cb74f0eac5161671799d1dae87e597f0c438d89"
},
"downloads": -1,
"filename": "prunarr-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4efa3db71e585142664f80dd045f39a4",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.9",
"size": 120806,
"upload_time": "2025-10-17T08:39:00",
"upload_time_iso_8601": "2025-10-17T08:39:00.149473Z",
"url": "https://files.pythonhosted.org/packages/c6/ff/6a7938858cc1db90a139ab1c83de64e27b7a0b6db3d9262d384ee91d7d76/prunarr-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "1104130d34c336b925b6abcb16f8e29fe0285025b9d75705e96cc877c4c4a7cf",
"md5": "7214ebf037ef668ccd3e27156a818d0b",
"sha256": "d26b24bb381776987e78ee61e084ab07e4b4731ee0f99e8edc19b24549bd947d"
},
"downloads": -1,
"filename": "prunarr-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "7214ebf037ef668ccd3e27156a818d0b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 102690,
"upload_time": "2025-10-17T08:39:02",
"upload_time_iso_8601": "2025-10-17T08:39:02.162159Z",
"url": "https://files.pythonhosted.org/packages/11/04/130d34c336b925b6abcb16f8e29fe0285025b9d75705e96cc877c4c4a7cf/prunarr-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-10-17 08:39:02",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "hploeg",
"github_project": "prunarr",
"github_not_found": true,
"lcname": "prunarr"
}