Sync watched status from Jellyfin to Letterboxd
Project description
Jellyfin Letterboxd Sync
Sync your watched movies and episodes from Jellyfin to Letterboxd.
Features
- Fetches watched movies and episodes from your Jellyfin server.
- Handles TV shows by mapping them to their series name (since Letterboxd supports some series/miniseries).
- Exports data to a CSV file compatible with Letterboxd import.
- Automates the upload process to Letterboxd using Playwright (browser automation).
Installation
You can install this package via pip (or uv):
uv tool install jellyfin-letterboxd-sync
# or
pip install jellyfin-letterboxd-sync
Since this tool uses Playwright, you'll also need to install the browser binaries. This tool defaults to using Brave/Chrome, so ensure you have a Chromium-based browser installed or install the Playwright browsers:
uv run playwright install chromium
# or
playwright install chromium
Usage
Run the sync tool with the required parameters:
jellyfin-letterboxd-sync \
--jellyfin-url "https://your-jellyfin-server.com" \
--jellyfin-user "your_jellyfin_username" \
--jellyfin-api-key "YOUR_JELLYFIN_API_KEY" \
--letterboxd-user "your_letterboxd_email" \
--letterboxd-pass "your_letterboxd_password"
Options
| Argument | Description | Required | Default |
|---|---|---|---|
--jellyfin-url |
URL of your Jellyfin server | Yes | - |
--jellyfin-user |
Jellyfin username to sync from | Yes | - |
--jellyfin-api-key |
API Key generated in Jellyfin Dashboard | Yes | - |
--letterboxd-user |
Letterboxd account email/username | Yes | - |
--letterboxd-pass |
Letterboxd account password | Yes | - |
--csv-path |
Temporary path for generated CSV | No | /tmp/letterboxd_import.csv |
--headless |
Run browser in headless mode (invisible) | No | False |
Getting a Jellyfin API Key
- Go to your Jellyfin Dashboard.
- Navigate to API Keys.
- Click + to create a new key.
- Name it "Letterboxd Sync" (or similar).
- Copy the generated key.
Development
To run locally without installing:
uv run -m jellyfin_letterboxd_sync.main --help
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file jellyfin_letterboxd_sync-0.1.4.tar.gz.
File metadata
- Download URL: jellyfin_letterboxd_sync-0.1.4.tar.gz
- Upload date:
- Size: 4.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d758ed289acfde2c52fa2c1080da20788e03518603a9d04ddfd8f0a59f238b06
|
|
| MD5 |
84ad7942bf0bbfe875dfd16891a65a4f
|
|
| BLAKE2b-256 |
f42cc41638120dcac120bda9186095d7e9642392de5f6c33f127a073dd7890f3
|
Provenance
The following attestation bundles were made for jellyfin_letterboxd_sync-0.1.4.tar.gz:
Publisher:
publish.yml on zianwar/jellyfin-letterboxd-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jellyfin_letterboxd_sync-0.1.4.tar.gz -
Subject digest:
d758ed289acfde2c52fa2c1080da20788e03518603a9d04ddfd8f0a59f238b06 - Sigstore transparency entry: 791289501
- Sigstore integration time:
-
Permalink:
zianwar/jellyfin-letterboxd-sync@5a98cb5275304c0911a1ee41283519fcfe6eaf7a -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/zianwar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a98cb5275304c0911a1ee41283519fcfe6eaf7a -
Trigger Event:
release
-
Statement type:
File details
Details for the file jellyfin_letterboxd_sync-0.1.4-py3-none-any.whl.
File metadata
- Download URL: jellyfin_letterboxd_sync-0.1.4-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81e2a6f6339083ef8300faf8f5563b5dbbff7c15b1ed0a3bddb147029fe2c91b
|
|
| MD5 |
7b5d47c22d22edcc485fc0fa6cc50992
|
|
| BLAKE2b-256 |
5d50424c5fde0bba76606ad92a187aac510d9f6cc8e4523c1c288ad122cf386c
|
Provenance
The following attestation bundles were made for jellyfin_letterboxd_sync-0.1.4-py3-none-any.whl:
Publisher:
publish.yml on zianwar/jellyfin-letterboxd-sync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jellyfin_letterboxd_sync-0.1.4-py3-none-any.whl -
Subject digest:
81e2a6f6339083ef8300faf8f5563b5dbbff7c15b1ed0a3bddb147029fe2c91b - Sigstore transparency entry: 791289506
- Sigstore integration time:
-
Permalink:
zianwar/jellyfin-letterboxd-sync@5a98cb5275304c0911a1ee41283519fcfe6eaf7a -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/zianwar
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@5a98cb5275304c0911a1ee41283519fcfe6eaf7a -
Trigger Event:
release
-
Statement type: