Features
A complete breakdown of every module and integration in Plexarr V2.1.
Torrent Search
Query multiple providers simultaneously. Results merge, deduplicate, and sort by seed count. No CORS limits thanks to the built-in proxy.
| Provider | Type | Categories | Cloudflare |
|---|---|---|---|
| Nyaa.si | Anime | All, Anime, Audio, Literature, Live Action, Pictures, Software, Games | No |
| AnimeTosho | Anime | All | No |
| YTS.mx | Movies | 720p, 1080p, 3D, 2160p | No |
| EZTV | TV | TV Episodes | No |
| TorrentGalaxy | General | Movies, TV, Anime, Apps, Games, Music, Books, Other | Yes |
| 1337x.to | General | Movies, TV, Anime, Apps, Games, Music | Yes |
tips_and_updates Extensible
Subclass BaseProvider in modules/torrent_search.py and register your new scraper. The UI will auto-populate it. Cloudflare-protected providers are only listed when the solver is enabled.
Metadata & Enrichment
Torrent titles are messy. Plexarr queries TMDB, Jikan, and TVDB to resolve clean titles, years, seasons, and episode numbers before renaming.
| Source | Purpose | Key Required | Cover Art |
|---|---|---|---|
| TMDB | Movies + TV shows | Free API key | Yes |
| Jikan v4 | Anime (MyAnimeList) | None | Yes |
| TVDB | Season + episode metadata | Paid subscription | No |
Batch Download Queue
Select multiple results from search and add them all at once. The batch queue tracks status, supports up to 50 items, and auto-starts processing.
Auto Renamer & Sorter
guessit parses filenames. Regex strips 100+ release tags. Files land in Plex-friendly paths.
Input: [HorribleSubs] Attack on Titan - 01 [1080p].mkv
Output: Anime/Attack on Titan/Season 01/Attack on Titan - S01E01.mkv
Input: Movie.Name.2024.1080p.BluRay.x264-YTS.mp4
Output: Movies/Movie Name (2024)/Movie Name (2024).mp4
Supported outputs: TV Shows, Movies, Anime, Music, and an Other catch-all. Batch sort entire directories recursively.
Watch Folder Auto-Categorize
Drop files into a monitored folder and Plexarr will automatically detect the media type, strip release tags, and move them to the correct Plex library path.
How It Works
- Enable
watch_folder.enabledin Settings or start the watcher via API. - Drop media files into the configured watch folder (default: same as Downloads).
- Plexarr detects the type: TV (episode patterns), Movie (year in title), Anime (group tags, short episodes), Music (audio extensions).
- Files are renamed to Plex format and moved to the matching library root.
API
POST /api/categorize
Content-Type: application/x-www-form-urlencoded
path=/media/plex/Downloads/movie.mkv
POST /api/categorize/batch
Content-Type: application/json
{ "directory": "/media/plex/Downloads/dropbox" }
POST /api/watch/start
Content-Type: application/json
{ "watch_dir": "/media/plex/Downloads/dropbox", "interval": 5, "name": "main" }
POST /api/watch/stop
Content-Type: application/json
{ "name": "main" }
GET /api/watch/status?name=main
GET /api/watch/list
Supported Types
| Type | Detection | Destination |
|---|---|---|
| TV | Episode patterns (S01E02, Season, Episode) | TV Shows/Show/Season/Show - S01E02.ext |
| Movie | Year in title, no episode markers | Movies/Title (Year)/Title (Year).ext |
| Anime | Anime group tags, short episode format | Anime/Title/Season/Title - S01E02.ext |
| Music | Audio extensions (.mp3, .flac, .m4a, .ogg, .wav) | Music/Artist/Album/Track.ext |
tips_and_updates Tip
The watcher runs in a background thread. It checks the folder every N seconds (default 5) and processes only new files. Existing files at startup are ignored to avoid re-sorting.
Naming Variations Detector
Detects 100+ known naming group variations including non-standard formats like MediaHub - eng, Pahe.in, and custom variations configurable in settings.
FFmpeg Post-Processing
After downloading or uploading, Plexarr can run FFmpeg to set default English audio and subtitle tracks. Detects language metadata even in non-standard titles. Can strip unwanted languages and keep only configured tracks.
qBittorrent Integration
Full Web API control. Add magnets, pause, resume, delete, and monitor live progress. Categories are mapped to Plex paths automatically.
tv-plex -> /media/plex/TV Shows
movies-plex -> /media/plex/Movies
anime-plex -> /media/plex/Anime
Usenet / SABnzbd / NZBGeek
Full Usenet integration via SABnzbd. Search NZBGeek, queue NZBs, and monitor download progress from the same web UI.
SABnzbd Control
- View queue and history
- Add NZB by URL or raw NZB upload
- Pause / resume individual downloads or the whole queue
- Delete jobs and release files
- Speed limit and status checks
NZBGeek Search
Search NZBGeek by query and category. Results include size, age, and group. One-click send to SABnzbd with category mapping.
| Provider | Type | Key Required |
|---|---|---|
| NZBGeek | General / TV / Movies / Anime | API key |
| SABnzbd | Usenet downloader | API key |
tips_and_updates Categories
Map SABnzbd categories to Plex paths in config: sabnzbd.categories_map. Example: tv -> /media/plex/TV Shows, movies -> /media/plex/Movies.
URL / Rapidgator Downloader
Download from direct URLs or Rapidgator. Premium mode uses the Rapidgator API for fast downloads. Free mode is supported but may require captcha.
Windscribe VPN
Control Windscribe VPN from the web UI. Connect, disconnect, check status, and list server locations. Auto-connect on startup is supported.
Cloudflare Solver
Optional Cloudflare bypass for protected sites like TorrentGalaxy and 1337x. Requires cloudscraper package. Not enabled by default.
Discord Integration
Two layers: Webhook notifications and a Doplarr-style bot.
Webhooks
- Torrent added (title, size, category)
- Download completed (save path)
- URL download completed (filename, path, size)
- FFmpeg processed (audio tracks, subtitle tracks, defaults)
- Error alerts
- Upload confirmations
- Progress summary every 60 seconds
- Status ping every 5 minutes
Bot Slash Commands
| Command | Description |
|---|---|
| /status | Server health check |
| /torrents | List active downloads with progress bars |
| /request | Search TMDB/Jikan and show metadata results |
| /search | Direct torrent search across providers |
| /library | Plex activity via Tautulli |
Remote View & Control
SocketIO JPEG stream from the server desktop. Click the image to move the mouse. Keyboard input panel for remote typing. Disabled by default.
warning Security
Remote control exposes your desktop. Only enable on trusted LANs. Never expose port 8080 to the internet without a VPN or reverse proxy.
Desktop Client (PyWebView)
A standalone cross-platform desktop application built with PyWebView. No browser required. Runs on Windows, macOS, and Linux.
Features
- System Tray: Minimize to tray, restore from icon, quick-actions menu.
- LAN Discovery: Auto-detect Plexarr servers on the local network.
- Multi-Server Profiles: Save and switch between multiple server URLs.
- Mini Mode: Compact floating window for quick status checks.
- Debug Console: Built-in developer console for troubleshooting.
- Keyboard Shortcuts: Global shortcuts for quick actions.
- Portable Mode: Run from a USB drive without installation.
Build
cd client/
pip install -r requirements.txt
python main.py
Package with PyInstaller or Nuitka for distribution. See Packing.md for full build instructions.
Prometheus & Grafana
Custom metrics endpoint at /prometheus/metrics. Pre-built dashboard JSON included.
- plexarr_active_torrents
- plexarr_download_speed_bytes
- plexarr_upload_speed_bytes
- plexarr_torrent_added_total (by provider, category)
- plexarr_torrent_completed_total (by category)
- plexarr_uploaded_files_total (by destination)
- plexarr_search_requests_total (by provider, query_type)
- plexarr_api_request_duration_seconds (by endpoint, histogram)
CORS Proxy
/proxy?url=... forwards any HTTP request through the server. This allows the client web UI to fetch tracker pages and torrent files without browser CORS restrictions. Add ?cf_bypass=1 to use the Cloudflare solver for a single request.
File Upload & Browser
Drag and drop files from any client into the server. Browse directory trees. Download files back. Path traversal is blocked. Configurable file size limits and extension whitelists.
WiFi Auto-Categorize Upload
Upload files from any phone or laptop on the same WiFi network and Plexarr will automatically detect the media type, rename the file to Plex format, and place it in the correct library folder.
Two Upload Modes
- Manual upload: Choose destination (TV, Movies, Anime, Music, Downloads) and optionally toggle auto-sort.
- WiFi auto-categorize: POST to
/api/upload/wifiwith no destination parameter. The server detects type, strips release tags, renames, and moves the file to the correct Plex path.
Supported Detection
| Type | Detection | Output Path |
|---|---|---|
| TV | Episode patterns (S01E02, Season, Episode) | TV Shows/Show/Season/Show - S01E02.ext |
| Movie | Year in title, no episode markers | Movies/Title (Year)/Title (Year).ext |
| Anime | Anime group tags, short episode format | Anime/Title/Season/Title - S01E02.ext |
| Music | Audio extensions (.mp3, .flac, .m4a, .ogg, .wav) | Music/Artist/Album/Track.ext |
API
POST /api/upload/wifi
Content-Type: multipart/form-data
file: [binary] # multiple files supported
GET /api/upload/wifi/status
Verbose Logging & Debugger
Structured logging with verbosity levels, debug mode, file output, log rotation, JSON output mode, and performance timers. Enable verbose mode in the Settings tab for detailed console output.