Fast, efficient Plex-Trakt sync using batch API operations
Project description
Pakt
Sync watched status, ratings, and collections between Plex and Trakt.
Installation
pip install pakt
With system tray support (Windows):
pip install pakt[tray]
Quick Start
pakt setup # Interactive setup wizard (links Plex via PIN)
pakt sync # Run sync
Commands
Setup & Authentication
pakt setup # Link Plex account via PIN authentication
pakt setup --token # Manual token entry instead of PIN
pakt login # Authenticate with Trakt
pakt logout # Clear Trakt authentication
pakt status # Show configuration status
Server Management
pakt servers discover # List available Plex servers from your account
pakt servers list # Show configured servers
pakt servers add NAME # Add server from discovered list
pakt servers add NAME --url URL --token TOKEN # Add server manually
pakt servers remove NAME
pakt servers enable NAME
pakt servers disable NAME
pakt servers test NAME # Test server connection
Sync
pakt sync # Sync all enabled servers
pakt sync --server NAME # Sync specific server(s) only
pakt sync -s NAME -s NAME2 # Sync multiple specific servers
pakt sync --dry-run # Preview without making changes
pakt sync --verbose # Show detailed item list
Libraries
pakt libraries # Show library selection for default server
pakt libraries --all # Sync all libraries (clear selection)
pakt libraries -m "Movies" # Select specific movie library
pakt libraries -s "TV Shows" # Select specific show library
Web Interface
pakt serve # Start web UI at localhost:8080
pakt serve --host 0.0.0.0 # Listen on all interfaces
pakt serve --port 9000 # Use custom port
pakt serve --tray # With system tray icon (Windows)
pakt serve --no-tray # Without system tray (default)
Maintenance
pakt clear-cache # Clear Trakt API cache
Web Interface
Start the web UI:
pakt serve
Open http://localhost:8080 in your browser.
Views
Sync - Run manual syncs with real-time progress and console output. Use "Dry Run" to preview changes without applying them. Enable "Verbose" to see individual items being synced.
Stats - Shows connection status for Trakt and all configured Plex servers, library counts, and last sync results.
Settings - Configure sync options, manage servers, and set up scheduling.
Sync Options
Options are organized by direction:
- Plex → Trakt: Watched, Ratings, Collection, Watchlist
- Trakt → Plex: Watched, Ratings, Watchlist
Global defaults can be overridden per-server in the Server Settings section.
Scheduled Sync
Enable automatic syncing at a set interval (in hours).
Important: The scheduler only runs while the web server is running. If you stop pakt serve, scheduled syncs will not occur. For persistent scheduling, run the server in the background (see Background Mode below).
Server Settings
Each Plex server has independent configuration:
- Libraries: Select which movie/show libraries to sync (empty = all)
- Sync Options: Override global defaults with per-server settings (Global/On/Off)
Background Mode (Windows)
Run without a console window:
pythonw -m pakt serve --tray
What Gets Synced
| Data | Plex → Trakt | Trakt → Plex |
|---|---|---|
| Watched status | ✓ | ✓ |
| Ratings | ✓ | ✓ |
| Collection | ✓ | - |
| Watchlist | ✓ | ✓ |
Collection sync includes media info (resolution, HDR, audio codec).
Multi-Server Support
Pakt supports syncing multiple Plex servers to a single Trakt account:
- Run
pakt setupto link your Plex account via PIN - Select which servers to enable
- Run
pakt syncto sync all enabled servers
Each server can have:
- Independent library selection
- Per-server sync option overrides
Servers are synced sequentially. Items that exist on multiple servers are deduplicated by external ID.
Configuration
Config location:
- Windows:
%APPDATA%\pakt - Linux/macOS:
~/.config/pakt
All configuration is stored in config.json.
Trakt Account Limits
Free Trakt accounts have a 100-item limit on collections and watchlists. Pakt will warn you if you hit these limits. Upgrade to Trakt VIP for unlimited.
Changelog
See CHANGELOG.md for release history.
License
MIT
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
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 pakt-0.2.0.tar.gz.
File metadata
- Download URL: pakt-0.2.0.tar.gz
- Upload date:
- Size: 378.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d0260f6a6b5b90b55400973f957f3b97c2831442e497c61b8ce3d409c9b870f6
|
|
| MD5 |
dafc967871fffc7ad1115f7de21f86df
|
|
| BLAKE2b-256 |
1f1d64ae9d603e4df0a042f5fc8a1ca4b769174804c8f2bdf815d6fae7b3a03b
|
Provenance
The following attestation bundles were made for pakt-0.2.0.tar.gz:
Publisher:
release.yml on MikeSiLVO/pakt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pakt-0.2.0.tar.gz -
Subject digest:
d0260f6a6b5b90b55400973f957f3b97c2831442e497c61b8ce3d409c9b870f6 - Sigstore transparency entry: 836185168
- Sigstore integration time:
-
Permalink:
MikeSiLVO/pakt@03ddd452a43d0705bb8e6d5519c355742e668aa0 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/MikeSiLVO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@03ddd452a43d0705bb8e6d5519c355742e668aa0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file pakt-0.2.0-py3-none-any.whl.
File metadata
- Download URL: pakt-0.2.0-py3-none-any.whl
- Upload date:
- Size: 379.6 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 |
e563f836730254d66afa2e8658ed8d4e310467c5886701b5fe0e830c77905fda
|
|
| MD5 |
40e0b251fa7fec0e41cadffb1f5706eb
|
|
| BLAKE2b-256 |
e1d5e5a2fd771b4f28d8b83577dc07aa6ed64b575ba1e0193fc71741302ce2bf
|
Provenance
The following attestation bundles were made for pakt-0.2.0-py3-none-any.whl:
Publisher:
release.yml on MikeSiLVO/pakt
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
pakt-0.2.0-py3-none-any.whl -
Subject digest:
e563f836730254d66afa2e8658ed8d4e310467c5886701b5fe0e830c77905fda - Sigstore transparency entry: 836185172
- Sigstore integration time:
-
Permalink:
MikeSiLVO/pakt@03ddd452a43d0705bb8e6d5519c355742e668aa0 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/MikeSiLVO
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@03ddd452a43d0705bb8e6d5519c355742e668aa0 -
Trigger Event:
push
-
Statement type: