Skip to main content

Export Plex watch history to Letterboxd-compatible CSV format

Project description

Plex to Letterboxd Exporter

Exports Plex watch history and ratings to a Letterboxd‑compatible CSV file using TMDB IDs for reliable matching.

Install

From PyPI:

pip install plex-letterboxd

Or with uv:

uv pip install plex-letterboxd

From source:

git clone https://github.com/brege/plex-letterboxd.git
cd plex-letterboxd
pip install .

Or with uv:

git clone https://github.com/brege/plex-letterboxd.git
cd plex-letterboxd
uv pip install .

Configure

There are two ways to include your Plex token.

Option 1: Set your Plex token in config.yaml:

plex:
  url: http://your-plex-server:32400
  token: PLEX_TOKEN
  timeout: 60

Option 2: Kometa users may source Kometa's config in this project's config.yaml:

kometa:
  config_path: ./path/to/Kometa/config.yml

Exporter options are in config.yaml.

  • export: output, after, before, user, library
  • csv: rating, review, max_rows, genres, tags, rewatch, mark_rewatch

See config.example.yaml for available options.

Usage

  • List users
plex-letterboxd --list-users
  • Export for a specific user
plex-letterboxd --user USERNAME --output plex-export.csv
  • Export a date range
plex-letterboxd \
    --user USERNAME \
    --after 2024-01-01 \
    --before 2024-12-31 \
    --output plex-export-2024.csv

Import at https://letterboxd.com/import/

See plex-letterboxd --help for CLI options.

Output CSV Columns

Field Description
tmdbID TMDB ID for precise matching
Title Movie title
Year Release year
Directors Director names
WatchedDate When you watched it (YYYY‑MM‑DD)
Rating Your rating (0.5–5.0), if enabled
Tags Genres and/or custom tags, if enabled
Rewatch Whether it's a rewatch

Automated Exports

Set up a systemd timer for automated monthly exports with CSV checkpointing.

Setup Timer

Monthly

bash <(curl -s https://raw.githubusercontent.com/brege/plex-letterboxd/refs/heads/main/systemd/install.sh)

Or weekly

bash <(curl -s https://raw.githubusercontent.com/brege/plex-letterboxd/refs/heads/main/systemd/install.sh) weekly

The timer will run the exporter on your chosen schedule, producing CSV files in ~/.config/plex-letterboxd/data/. Configure the output data directory via config.yaml to change.

I suggest running this on the same machine Plex runs on, since it's typically always online.

License

GPLv3

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

plex_letterboxd-0.7.tar.gz (23.2 kB view details)

Uploaded Source

Built Distribution

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

plex_letterboxd-0.7-py3-none-any.whl (23.6 kB view details)

Uploaded Python 3

File details

Details for the file plex_letterboxd-0.7.tar.gz.

File metadata

  • Download URL: plex_letterboxd-0.7.tar.gz
  • Upload date:
  • Size: 23.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plex_letterboxd-0.7.tar.gz
Algorithm Hash digest
SHA256 695f6cc71e3aadf1ce7624bd9dbeae6f41655b31c14530f2d81f54339fd94786
MD5 6eb2b46ecdc4d220b394a8ca5fb40c50
BLAKE2b-256 3196cbc4df68ceec81d7ca85f2ecf7876921f815c007b139783f0a627e57044b

See more details on using hashes here.

Provenance

The following attestation bundles were made for plex_letterboxd-0.7.tar.gz:

Publisher: publish.yml on brege/plex-letterboxd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file plex_letterboxd-0.7-py3-none-any.whl.

File metadata

  • Download URL: plex_letterboxd-0.7-py3-none-any.whl
  • Upload date:
  • Size: 23.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for plex_letterboxd-0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 12a18156e8a31409b3e8085ace4256b1e48b8f5eafa17ac582edf199aaf3030f
MD5 e03432ef3c2668ace2d0b9f93dd13de6
BLAKE2b-256 7a59f1d9a8c9fbbcd057c0d6dffb0218192b33ee66e01b74ca36210ff91ee5fe

See more details on using hashes here.

Provenance

The following attestation bundles were made for plex_letterboxd-0.7-py3-none-any.whl:

Publisher: publish.yml on brege/plex-letterboxd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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