Integrations

Connect Plexarr to qBittorrent, SABnzbd, Plex, Discord, Grafana, and more.

Discord Bot

The included bot mirrors Doplarr functionality. Users request media via slash commands. The bot searches metadata and presents clean results.

CommandDescription
/statusServer health check
/torrentsList active downloads with progress bars
/requestSearch TMDB/Jikan and show metadata results
/searchDirect torrent search across providers
/libraryPlex activity via Tautulli

Tautulli Integration

Tautulli provides deep Plex activity tracking. Configure tautulli.url and tautulli.api_key to enable:

  • /api/tautulli/activity — current stream count, transcodes, direct plays
  • Discord /library slash command

Install: tautulli.com (Docker recommended)

Overseerr Integration

Overseerr handles user requests for Plex. Plexarr can proxy its status:

  • /api/overseerr/status — Overseerr health check

Install: overseerr.dev (Docker recommended)

Discord Webhooks

Plexarr sends rich embed notifications to Discord when configured with a webhook URL.

Triggered events:

  • Torrent added (title, size, category)
  • Torrent completed (save path)
  • URL download completed (filename, path, size)
  • FFmpeg processed (audio tracks, subtitle tracks, defaults)
  • Torrent error
  • File uploaded (filename, destination, size)
  • Periodic status ping (every 5 minutes, optional)
  • Progress updates (every 60 seconds for active downloads)

Create a webhook in Discord: Server Settings > Integrations > Webhooks. Copy URL and paste into discord.webhook_url.

Grafana Dashboard

The pre-built dashboard includes 5 panels:

  1. Active Torrents — stat panel showing current count
  2. Download Speed — time series graph (bytes/s)
  3. Upload Speed — time series graph (bytes/s)
  4. Torrents Added by Provider — bar gauge
  5. Files Uploaded by Destination — stat panel

Import via Import Dashboard > Paste JSON in Grafana.

Windscribe VPN Integration

Plexarr can control Windscribe VPN from the web UI. Endpoints:

  • /api/vpn/status — check connection state, IP, location
  • /api/vpn/connect — connect to a location
  • /api/vpn/disconnect — disconnect VPN
  • /api/vpn/locations — list available server locations

Enable in config: vpn.enabled, set vpn.cli_path to the Windscribe CLI binary.

Rapidgator / URL Downloader

Plexarr supports downloading from direct URLs and Rapidgator. Two modes:

Generic Direct Download

Any HTTP URL is downloaded via the server and saved to the configured path.

Rapidgator Premium

Set url_downloader.rapidgator.premium to true and add your api_key. Files are downloaded via the Rapidgator API v2.

Rapidgator Free

Free mode requires captcha solving. Not reliable. The server will warn you and suggest enabling premium or using torrents.

Cloudflare Solver

Some torrent providers (TorrentGalaxy, 1337x) use Cloudflare protection. These sites are NOT listed by default in the provider search.

To enable them:

  1. Install cloudscraper: pip install cloudscraper
  2. Enable in config: cloudflare_solver.enabled = true
  3. The providers will automatically appear in the UI

You can also use the CORS proxy with ?cf_bypass=1 to fetch individual URLs.

Status endpoint: /api/cloudflare/status

SABnzbd Integration

Plexarr controls SABnzbd via its JSON API. Configure sabnzbd.host, sabnzbd.api_key, and sabnzbd.categories_map in config.json.

Endpoints

  • /api/sabnzbd/queue — current download queue
  • /api/sabnzbd/history — completed history
  • /api/sabnzbd/add — add NZB by URL or raw upload
  • /api/sabnzbd/pause — pause entire queue
  • /api/sabnzbd/resume — resume queue
  • /api/sabnzbd/delete — delete job by ID
  • /api/sabnzbd/speed — speed limit status

Category Mapping

tv      -> /media/plex/TV Shows
movies  -> /media/plex/Movies
anime   -> /media/plex/Anime
music   -> /media/plex/Music

Files downloaded by SABnzbd are automatically sorted into Plex paths if the category matches the configured map.

NZBGeek Integration

Search NZBGeek from the web UI and send NZBs directly to SABnzbd.

Search Endpoint

GET /api/nzbgeek/search?q=Movie+Name&category=movies&limit=50

Requires nzbgeek.enabled and nzbgeek.api_key. Categories: tv, movies, anime, music, books, other.

FFmpeg Post-Processing

After downloading or uploading a media file, Plexarr can run FFmpeg to:

  • Set default English audio track (or any configured language)
  • Set default English subtitle track
  • Strip unwanted languages (optional)
  • Detect language from non-standard metadata (MediaHub-eng, Pahe.in, etc.)

Configuration:

  • ffmpeg.default_audio_lang — default audio language (default: eng)
  • ffmpeg.default_subtitle_lang — default subtitle language (default: eng)
  • ffmpeg.wanted_langs — languages to keep (default: ["eng", "jpn"])
  • ffmpeg.strip_unwanted_langs — remove non-wanted tracks (default: false)
  • ffmpeg.post_process_downloads — auto-run after download (default: true)

Desktop Client (PyWebView)

The Plexarr Desktop Client is a standalone PyWebView application that wraps the server UI in a native window. It 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.

Running from Source

cd client/
pip install -r requirements.txt
python main.py

Packaging

See Packing.md for detailed build instructions for Windows (.exe), macOS (.app), and Linux (AppImage / binary).

Auto Renamer

The renamer uses guessit to parse filenames, then strips release tags and restructures into Plex folders.

Stripped Tags

1080p, 720p, 4K, x264, x265, HEVC, AVC, BluRay, WEB-DL, WEBRip, DVDRip, BDRip, HDTV, HDR, Dual Audio, ESub, KORSUB, repack names (HorribleSubs, YIFY, RARBG, YTS, etc.), 10-bit, 8-bit, and bracketed groups.

API

POST /api/sort
path=/media/plex/Downloads/movie.mkv&media_type=movie

POST /api/sort/batch
directory=/media/plex/Downloads/unsorted

Screen Stream

Uses mss to capture the primary monitor, Pillow to JPEG-compress, and SocketIO to broadcast base64 frames to all connected clients.

Clicking on the stream image sends mouse coordinates to the server via /api/remote/mouse. Keyboard input is supported via the text panel.

Disabled by default for performance and security.

CORS Proxy

/proxy?url=https://... 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.