Skip to main content

CLI tool to sync Plex watchlist with Sonarr and Radarr

Project description

Lumarr

A lightweight CLI tool to automatically sync your Plex watchlist and Letterboxd lists with Sonarr and Radarr.

Python Version PyPI version Docker Hub License

Overview

Lumarr monitors your Plex watchlist and Letterboxd activity, automatically adding movies and TV shows to your Sonarr and Radarr instances. It runs as a lightweight CLI tool with support for one-time syncs, scheduled runs, or continuous monitoring.

Key Features

  • Plex Watchlist Sync - Automatically add watchlist items to Sonarr/Radarr
  • Letterboxd Integration - Sync watched movies and watchlists from Letterboxd
  • Smart Duplicate Prevention - Local database tracks synced items
  • Multiple Sync Modes - One-time, scheduled, or continuous monitoring
  • Interactive Configuration - Easy setup wizard for first-time configuration
  • Rich CLI - Beautiful terminal output with detailed status information
  • Docker Support - Run in a container for easy deployment

Quick Start

Installation

Using pip (Recommended):

pip install lumarr

Using Docker:

docker pull blueconfetti/lumarr:latest

From Source:

# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh

# Clone and install
git clone https://github.com/yourusername/lumarr.git
cd lumarr
uv pip install -e .

See Installation Guide for more installation options.

Configuration

  1. Create config file:

    cp config.example.yaml config.yaml
    
  2. Run interactive wizard:

    lumarr config
    
  3. Or manually edit config.yaml with your API keys and settings

See Configuration Guide for detailed configuration options.

Usage

# Test connections
lumarr status

# Preview sync (dry run)
lumarr sync --dry-run

# Sync once
lumarr sync

# Continuous monitoring (recommended)
lumarr sync --follow

See CLI Reference for all available commands.

How It Works

  1. Connects to Plex (via API or RSS feed) to fetch your watchlist
  2. Optionally fetches Letterboxd watched movies and watchlists
  3. Extracts TMDB, TVDB, and IMDB IDs from metadata
  4. Checks local database to skip already-synced items
  5. Adds new movies to Radarr and TV shows to Sonarr
  6. Records sync history to prevent duplicates

Performance:

  • RSS Feed mode: 1 HTTP request for entire watchlist
  • API mode with caching: ~1-2 requests per sync
  • Follow mode: Continuous monitoring with configurable intervals

Documentation

Requirements

  • Python 3.9 or higher
  • Plex account with authentication token
  • Sonarr and/or Radarr instance
  • Optional: TMDB API key for enhanced ID resolution
  • Optional: Letterboxd account for Letterboxd sync

Deployment Options

Docker (Recommended for Production)

cd docker
docker-compose up -d

See Docker Guide for details.

Systemd Service

[Unit]
Description=Lumarr Sync Service
After=network.target

[Service]
Type=simple
User=your-user
WorkingDirectory=/path/to/lumarr
ExecStart=/usr/bin/lumarr sync --follow
Restart=always

[Install]
WantedBy=multi-user.target

Cron

# Every 6 hours
0 */6 * * * cd /path/to/lumarr && lumarr sync

Architecture

lumarr/
├── src/lumarr/
│   ├── api/             # API clients (Plex, Sonarr, Radarr, TMDB, Letterboxd)
│   ├── cli.py           # CLI interface
│   ├── config.py        # Configuration management
│   ├── db.py            # SQLite database operations
│   ├── models.py        # Data models
│   └── sync.py          # Sync orchestration
├── docker/              # Docker configuration
├── docs/                # Documentation
├── config.yaml          # Your configuration
└── lumarr.db           # SQLite database (auto-created)

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

License

MIT License - see LICENSE for details.

Acknowledgments

This project was inspired by Ombi's watchlist import feature, designed as a lightweight CLI alternative for users who only need watchlist syncing.

Support

Test auto-merge Sat Oct 25 14:50:12 PDT 2025

Testing

Final test Mon Oct 27 07:54:07 PDT 2025

Auto-merge victory! Mon Oct 27 07:56:14 PDT 2025

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lumarr-0.4.3.tar.gz (39.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lumarr-0.4.3-py3-none-any.whl (42.7 kB view details)

Uploaded Python 3

File details

Details for the file lumarr-0.4.3.tar.gz.

File metadata

  • Download URL: lumarr-0.4.3.tar.gz
  • Upload date:
  • Size: 39.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for lumarr-0.4.3.tar.gz
Algorithm Hash digest
SHA256 171e9f211af55c5d35cb4da1f7cb8ef3113e74298c807b54c8982645e029a0b5
MD5 ac23ec33546d31b5e52d99ede7d06b82
BLAKE2b-256 d82b4e2ad040a045518b106e836de2c7e4c1296521feaa7420e6428bb749090c

See more details on using hashes here.

File details

Details for the file lumarr-0.4.3-py3-none-any.whl.

File metadata

  • Download URL: lumarr-0.4.3-py3-none-any.whl
  • Upload date:
  • Size: 42.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.13

File hashes

Hashes for lumarr-0.4.3-py3-none-any.whl
Algorithm Hash digest
SHA256 cd5f24d0ea8ab3a10e90b70dcc4ae73760470db882f957d36f0a6de5e8c5bb5f
MD5 42cfbe4b65cab3315144259c1f2292fc
BLAKE2b-256 f241d02590163dbc02ffd72255dd60b3d8da2cd503629d1351c04d82ff11502b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page