Automatically sync your Letterboxd lists to your Radarr instance. This script periodically checks your configured Letterboxd lists and adds any new movies to Radarr.
- 🎬 Scrapes multiple Letterboxd lists (watchlists, collections, actors, directors, etc.)
- 🏷️ Automatic tag assignment to movies based on their source list
- 🔄 Automatic periodic synchronization
- 📝 Tracks processed movies to avoid duplicates
- 🐳 Docker support for easy deployment
- 🔍 Smart movie matching using title and year, falling back to TMDB ID
- ⚡ Configurable sync interval and filters
- 🎭 Per-list filtering (skip documentaries, short films, etc.)
- ⚙️ YAML configuration file support
- 🌐 Web interface for configuration and monitoring
- A running Radarr instance
- Radarr API key
- Docker and Docker Compose (for containerized deployment)
- Python 3.11+ (for local deployment)
- Node.js 18+ (for frontend development)
- Open Radarr web interface
- Go to Settings → General → Security
- Copy your API Key
Run this command to list available quality profiles:
curl -H "X-Api-Key: YOUR_API_KEY" http://your-radarr-url:7878/api/v3/qualityprofileNote the id of your preferred quality profile.
Run this command to list available root folders:
curl -H "X-Api-Key: YOUR_API_KEY" http://your-radarr-url:7878/api/v3/rootfolderNote the path of your movies folder.
Copy the example configuration file to config.yml and customize it with your Radarr URL, API key, quality profile, root folder, and Letterboxd lists.
Create a docker-compose.yml file:
---
services:
letterboxarr:
image: fcote/letterboxarr:latest
container_name: letterboxarr
restart: unless-stopped
ports:
- "7373:7373" # Web interface
volumes:
- ./config.yml:/app/config.yml # Configuration file
- ./data:/app/data # Persistent storage for tracking processed movies
environment:
- SECRET_KEY=${SECRET_KEY:-your-secret-key-change-this-in-production}
- ADMIN_USERNAME=${ADMIN_USERNAME:-admin}
- ADMIN_PASSWORD=${ADMIN_PASSWORD:-admin}Build and run:
docker-compose up -dAccess the web interface at http://localhost:7373
docker build -t letterboxarr .
docker run -d \
--name letterboxarr \
--restart unless-stopped \
-p 7373:7373 \
-v $(pwd)/config.yml:/app/config.yml \
-v $(pwd)/data:/app/data \
-e SECRET_KEY=your-secret-key-change-this \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=admin \
letterboxarrThen access the web interface at http://localhost:7373
Install Python dependencies:
cd frontend && npm install && npm run build
pip install -r requirements.txtRun the web server:
python main.py- User Lists:
username/watchlist,username/films,username/diary - Collections:
films/in/collection-name - Popular/Charts:
films/popular,films/popular/this/year - People:
actor/name,director/name,writer/name - Genres:
films/genre/horror,films/genre/sci-fi - Custom Lists: Any valid Letterboxd URL path
Movies from each list can be automatically tagged in Radarr. Filters can be applied globally or per-list to skip certain types of content.
The web interface is protected by authentication. Default credentials:
- Username:
admin(configurable viaADMIN_USERNAMEenvironment variable) - Password:
admin(configurable viaADMIN_PASSWORDenvironment variable)
Important: Change these credentials in production by setting the environment variables.
The script maintains a processed_movies.json file to track which movies have been processed. This prevents duplicate additions and unnecessary API calls. This file is stored in the /app/data directory in the container (mapped to ./data on the host).
Feel free to submit issues or pull requests for improvements!
MIT License
This tool is not affiliated with Letterboxd or Radarr. Use responsibly and respect the terms of service of both platforms.
