このプロジェクトは、trakt.tv と Plex Media Server の間に双方向同期を追加します。 trakt.tv アカウントが必要ですが、Trakt が提供する Plex アプリとは異なり、Plex プレミアムや Trakt VIP サブスクリプションは必要ありません。
元々は @Taxel によって作成されましたが、現在は寄稿者によって維持されています。
注: PyTrakt API キーは安全に保存されていないため、これらを含むファイルをハードドライブに保存したくない場合は、このプロジェクトを使用できません。
貢献する方法をお探しですか?
このスクリプトは、Python 3.9 ~ 3.13 バージョンで動作することがわかっています。
pipxでインストール。
pipx install PlexTraktSync
または、特定のバージョンをインストールするには:
pipx install PlexTraktSync==0.15.2 --force
そしてアップグレードするには:
plextraktsync self-update
これは単にpipx
呼び出すだけです:
pipx upgrade PlexTraktSync
実行するには:
plextraktsync sync
注: pipx
インストールでは、構成、ログ、キャッシュに OS 固有のパスが使用されます。詳細については、platformdirs のドキュメントを参照するか、info コマンドの出力を確認してください。
次のように docker compose ファイルを設定できます。
version : " 2 "
services :
plextraktsync :
image : ghcr.io/taxel/plextraktsync
command : sync
container_name : plextraktsync
restart : on-failure:2
volumes :
- ./config:/app/config
environment :
- PUID=1000
- PGID=1000
- TZ=Europe/Tallinn
特定のバージョン0.25.16
を使用できます。
image: ghcr.io/taxel/plextraktsync:0.25.16
または最新の 0.25.x バージョン:
image: ghcr.io/taxel/plextraktsync:0.25
注: main
開発バージョンであり、開発バージョンに対するバグの報告はサポートされていません。
同期を実行するには:
docker compose run --rm plextraktsync sync
同期が完了するとコンテナは停止します。設定した間隔で自動的に実行するには、「セットアップ」セクションを読んでください。
これは、開発バージョンをインストールして、プル リクエストで問題が解決されるかどうかをテストするためです。
プル リクエストからコードをインストールする方法については、寄稿ガイドを参照してください。
注:このインストール方法はサポートされていません。これはユーザーの投稿によってのみ文書化されています。
.zip
リリースをダウンロードします。setup.bat
実行して要件をインストールし、オプションのショートカットとルーチンを作成します(Windows 7sp1 ~ 11 が必要) 。注:このインストール方法はサポートされていません。これはユーザーの投稿によってのみ文書化されています。
コンテナ作成のオプション 1: PlexTraktSync の手動 Unraid コンテナを作成します。
ghcr.io/taxel/plextraktsync:latest
(または任意のタグ) を入力します。-it
と入力します。plextraktsync
と入力して、上記の認証プロセスを開始します。コンテナ作成のオプション 2: 「Community Apps」Unraid プラグインを利用します。
インストールしたら (またはすでにインストールされている場合):
同期を処理するためにコンテナを指定の間隔で起動するようにスケジュール (cron) します。
インストールしたら (またはすでにインストールされている場合):
#!/bin/bash
# Check if the container is running
if [ "$(docker ps -q -f name=PlexTraktSync)" ]; then
echo "PlexTraktSync container is already running."
else
echo "PlexTraktSync container is not running. Starting it now..."
docker start PlexTraktSync
fi
# Run the sync command inside the container
docker exec PlexTraktSync plextraktsync sync
注:このインストール方法はサポートされていません。このインストール方法を使用した場合、サポートは受けられません。
GitHub からのインストールは開発者モードとみなされ、CONTRIBUTING.md に文書化されています。
Trakt API アプリをまだお持ちでない場合は、作成する必要があります。
urn:ietf:wg:oauth:2.0:oob
と入力します。 plextraktsync login
実行すると、スクリプトは不足している資格情報を要求します。
注: Docker コンテナーで資格情報をセットアップするには、「Docker コンテナーの実行」セクションを参照してください。
最初の実行時に、Trakt と Plex へのアクセスをセットアップするように求められます。
指示に従ってください。資格情報と API キーは.env
ファイルと.pytrakt.json
ファイルに保存されます。 Plex URL とトークンは、 servers.yml
に保存されます。
Plex で 2 要素認証を有効にしている場合は、プロンプトが表示されたらコードを入力します。 2FA を有効にしていない場合は、プロンプトを空白のままにして Enter キーを押します。
Linux または macOS で Cronjob をオプションで使用して、設定された間隔でスクリプトを実行できます。
たとえば、このスクリプトを cron ジョブで 2 時間ごとに実行するには、次のようにします。
$ crontab -e
0 */2 * * * $HOME/.local/bin/plextraktsync sync
which plextraktsync
コマンドを使用して、システムの plextraktsync 実行可能ファイルを見つけ、それに応じて更新します。cron の代わりに、Ofelia のような Docker スケジューラを使用して、設定された間隔でスクリプトを実行することもできます。
6 時間間隔での Docker Compose の例:
version : " 2 "
services :
scheduler :
image : mcuadros/ofelia:latest
container_name : scheduler
depends_on :
- plextraktsync
command : daemon --docker
volumes :
- /var/run/docker.sock:/var/run/docker.sock:ro
labels :
ofelia.job-run.plextraktsync.schedule : " @every 6h "
ofelia.job-run.plextraktsync.container : " plextraktsync "
plextraktsync :
image : ghcr.io/taxel/plextraktsync:latest
container_name : plextraktsync
command : sync
volumes :
- ./config:/app/config
このソフトウェアの機能の一部を無効にするには、 config.yml
参照するだけです。最初の実行時に、スクリプトはconfig.default.yml
に基づいてconfig.yml
を作成します。最初の実行前に設定をカスタマイズしたい場合 (完全同期を望まない場合など)、スクリプトを起動する前にconfig.yml
コピーして編集できます。ここの同期セクションでは、テキスト エディターで次の項目をtrue
からfalse
に設定することで無効にできます。
スクリプトの最初の実行には (PMS ライブラリのサイズによって異なります) 時間がかかります。その後、映画の詳細と Trakt リストがキャッシュされるため、2 回目からはかなり速く実行されるはずです。ただし、これは、Trakt リストが動的に更新されないことを意味します (これは、「2018 アカデミー賞候補者」のようなリストには問題ありませんが、頻繁に更新されるリストには理想的ではない可能性があります)。私の Plex サーバーでの実行時間は次のとおりです: 最初の実行 - 1228 秒、2 回目の実行 - 111 秒
同期の進行状況は、作成されるplextraktsync.log
ファイルで確認できます。
--edit
または--locate
フラグを使用してconfig
コマンドを実行すると、エディタまたはファイル ブラウザで構成ファイルを開くことができます。
デフォルトでは、すべてのライブラリが処理されます。 config.yml
のexcluded-libraries
変更することで、名前でライブラリを無効にできます。
また、 servers.yml
でサーバーごとにexcluded-libraries
設定することもできます。
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
excluded-libraries :
- " Family Movies "
さらに、処理するライブラリのみをリストすることもできます。この場合、グローバルexcluded-libraries
このサーバーには使用されません。
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
libraries :
- " Movies "
- " TV Shows "
info コマンドを使用すると、ライブラリの最終的なリストを確認できます。
$ plextraktsync --server=Example1 info
Enabled 2 libraries in Plex Server:
- 1: Movies
- 2: TV Shows
サーバーごとに構成を指定したい場合は、 servers.yml
内で指定できます。サーバー構成のconfig
部分内で、特定のサーバーがどのように動作するかを指定できます。
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
sync :
plex_to_trakt :
collection : true
trakt_to_plex :
liked_lists : false
サーバー構成でsync
を使用するとconfig.yml
のグローバル sync-config がオーバーライドされます。
これは、異なるライブラリ間で異なる構成を持たせるためにも使用できます。これを行うには、必要なサーバーの数を指定します (おそらく、必要なさまざまな構成セットアップの数と同じです)。例えば:
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
libraries :
- " Movies "
sync :
plex_to_trakt :
ratings : true
watched_status : true
trakt_to_plex :
ratings : true
watched_status : true
Example2 :
token : ~
urls :
- http://localhost:32400
config :
libraries :
- " TV Shows "
sync :
plex_to_trakt :
ratings : true
watched_status : false
trakt_to_plex :
ratings : true
watched_status : false
上記の設定により、「映画」ライブラリは評価と視聴ステータスの両方を同期し、「テレビ番組」ライブラリは評価のみを同期するようになります。次に同期を実行するには、 --server Example1
または--server Example2
を指定して、その特定のサーバーに対して同期を実行する必要があります。
--server
指定せずに sync コマンドを実行すると、 .env
のデフォルトのサーバーが使用されます。
ofelia
を使用してこれらのジョブを実行したい場合は、 docker-compose.yml
でこれに似たものを実行することで実行できます。
services :
plextraktsync :
image : ghcr.io/taxel/plextraktsync
command : sync
container_name : plextraktsync
profiles : ["schedule"]
volumes :
- /configs/mediarr/plextraktsync:/app/config
environment :
- PUID=1000
- PGID=1000
depends_on :
- plex
scheduler :
image : mcuadros/ofelia:latest
container_name : scheduler
command : daemon --docker
restart : unless-stopped
volumes :
- /var/run/docker.sock:/var/run/docker.sock:ro
labels :
ofelia.job-run.plextraktsync.schedule : " 0 6,18 * * * "
ofelia.job-run.plextraktsync.container : " plextraktsync "
ofelia.job-run.plextraktsync.command : " --server 'Example1' sync "
ofelia.job-run.plextraktsync2.schedule : " 0 12,0 * * * "
ofelia.job-run.plextraktsync2.container : " plextraktsync "
ofelia.job-run.plextraktsync2.command : " --server 'Example2' sync "
PlexTraktSync コンテナーを 1 つだけ実行している場合は、2 つのジョブ Ofelia ジョブが同時に実行されないようにする必要があります。前のジョブがまだ実行中の場合、Ofelia は新しいジョブの実行のスケジュールをスキップします。
サーバー上でジョブを実行するのにかかる時間に応じて、2 つのジョブのスケジュールを数分または数時間離す必要がある場合があります。 Docker Compose に 2 つの異なる PlexTraktSync コンテナがある場合、それらを同時に実行できます。
上記の構成は、ジョブが 6 時間ごとに 2 つの「サーバー」間で交互に実行されることを意味します。 PlexTraktSync コンテナには、「schedule」と呼ばれる docker compose プロファイルもあります。これは、たとえばdocker compose up
実行するときに自動的に実行されないことを意味します。
デフォルトのログレベルはINFO
です。これを DEBUG に変更するには、 config.yml
の「debug」変数をtrue
に編集します。
デフォルトでは、ログは追加されます。最後の実行のログのみを保持したい場合は、 config.yml
の「append」変数をfalse
に編集します。
plextraktsync --help
を実行して、使用可能なコマンドを確認します。 COMMAND
のヘルプを表示するには、 plextraktsync COMMAND --help
を実行します。
$ plextraktsync --help
Usage: plextraktsync [OPTIONS] COMMAND [ARGS]...
Plex-Trakt-Sync is a two-way-sync between trakt.tv and Plex Media Server
Options:
--version Print version and exit
--no-cache Disable cache in for Trakt HTTP requests
--no-progressbar Disable progressbar
--batch-delay INTEGER Time in seconds between each collection batch submit
to Trakt [default: 5]
--server NAME Plex Server name from servers.yml
--help Show this message and exit.
Commands:
bug-report Create a pre-populated GitHub issue with information...
cache Manage and analyze Requests Cache.
clear-collections Clear Movies and Shows collections in Trakt
config Print user config for debugging and bug reports.
download Downloads movie or subtitles to a local directory
imdb-import Import IMDB ratings from CSV file.
info Print application and environment version info
inspect Inspect details of an object
login Log in to Plex and Trakt if needed
plex-login Log in to Plex Account to obtain Access Token.
self-update Update PlexTraktSync to the latest version using pipx
sync Perform sync between Plex and Trakt
trakt-login Log in to Trakt Account to obtain Access Token.
unmatched List media that has no match in Trakt or Plex
watch Listen to events from Plex
watched-shows Print a table of watched shows
不足しているドキュメントを自分で投稿することもできます。
sync
サブコマンドは--sync=shows
および--sync=movies
オプションをサポートしているため、特定のライブラリ タイプのみを同期できます。またはウォッチリストのみ: --sync=watchlist
。
➔ plextraktsync sync --help
Usage: plextraktsync sync [OPTIONS]
Perform sync between Plex and Trakt
Options:
--sync [all|movies|shows|watchlist]
Specify what to sync [default: all]
--help Show this message and exit.
unmatched
コマンドを使用してライブラリをスキャンし、一致しないムービーを表示できます。
一致しないショーのサポートはまだ実装されていません。
plextraktsync unmatched
info コマンドを使用すると、パッケージのバージョン、アカウント情報、キャッシュ、構成、およびログ ディレクトリの場所を出力できます。
$ plextraktsync info
PlexTraktSync Version: 0.16.0
Python Version: 3.10.0 (default, Oct 6 2021, 01:11:32) [Clang 13.0.0 (clang-1300.0.29.3)]
Plex API Version: 4.7.2
Trakt API Version: 3.2.1
Cache Dir: /Users/glen/Library/Caches/PlexTraktSync
Config Dir: /Users/glen/Library/Application Support/PlexTraktSync
Log Dir: /Users/glen/Library/Logs/PlexTraktSync
Plex username: nobody
Trakt username: nobody
Plex Server version: 1.24.3.5033-757abe6b4, updated at: 2021-02-21 17:00:00
Server has 2 libraries: ['Movies', 'TV Shows']
Inspect コマンドは、Plex Media Server アイテムに関する情報を取得するために使用されます。これは、問題のデバッグや問題の報告に役立ちます。
123
plextraktsync inspect 123
plextraktsync inspect "https://app.plex.tv/desktop/#!/server/53aff62c4bb6027c1ada814d417e83ccdf4d5045/details?key=/library/metadata/123"
さまざまなシェルの問題を回避するには、値を二重引用符で囲みます。
watch
コマンドを使用して、Plex Media Server からのイベントをリッスンし、再生をスクロブルできます。
スクロブルとは何ですか?
スクロールとは、簡単に言えば、見ているものを自動的に追跡することを意味します。携帯電話から Web サイトにチェックインする代わりに、このコマンドはバックグラウンドで実行され、メディアの視聴を楽しんでいる間、自動的に Trakt にスクロブルして戻ります- Plex [email protected]
スクロブルを自分のユーザーのみに制限するには (推奨)、 config.yml
で次のように設定します。
watch :
username_filter : true
watch
コマンドを実行するには:
plextraktsync watch
または
docker compose run --rm plextraktsync watch
または、 command: watch
docker compose ファイルに追加し、 docker compose up -d plextraktsync
、切り離されたコンテナーを開始します。
version : " 2 "
services :
plextraktsync :
image : ghcr.io/taxel/plextraktsync
volumes :
- ./config:/app/config
command : watch
バックグラウンドで自動的にスクロブルするように systemd ユニットを作成します。
[Unit]
Description =PlexTraktSync watch daemon
After =network-online.target
[Service]
ExecStart =plextraktsync watch
Restart =on-failure
RestartSec =10
User =user
Group =user
[Install]
WantedBy =multi-user.target
インストール方法によっては、ExecStart コマンドを次のように設定する必要がある場合があることに注意してください。
ExecStart =/path/to/plextraktsync/plextraktsync.sh watch
その後、サービスを有効にする必要があります。
sudo systemctl daemon-reload
sudo systemctl start PlexTraktSync.service
sudo systemctl enable PlexTraktSync.service
systemd ユーザーサービスとして実行することもできます。
このウォークスルーでは、同じ構成で異なるサーバーを使用することができます。
これは、 plextraktsync
がユーザーのpipx
とともにインストールされていることを前提としています。
# [email protected]
[Unit]
Description =PlexTraktSync watch daemon
After =network-online.target
[Service]
ExecSearchPath =%h/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart =plextraktsync watch -- server =%i
Restart =on-failure
RestartSec =10
[Install]
WantedBy =default.target
サービス テンプレート ファイルをインストールします。
root
として: /etc/xdg/systemd/user/[email protected]
(すべてのユーザー)~/.config/systemd/user/[email protected]
(ユーザーのみ)次に、systemd をリロードする必要があります。
root
としてインストールされている場合: sudo systemctl daemon-reload
systemctl --user daemon-reload
ここで、 servers.yml
のサーバー名 (この例ではSERVER_NAME
に基づいてインスタンスを作成します。
systemctl --user start "plextraktsync@SERVER_NAME.service"
systemctl --user status "plextraktsync@SERVER_NAME.service"
完全なログについては、 journalctl
使用できます (ログを追跡するために-f
を追加します)。
journalctl --user -u "plextraktsync@SERVER_NAME.service"
すべてが機能する場合は、ホストの再起動時に自動起動するように有効にします。
systemctl --user enable "plextraktsync@SERVER_NAME.service"
ログインせずに systemd --user セッションを開始するには、systemd-linger を有効にする必要があります。
loginctl enable-linger
Plex Movie
およびPlex TV Series
メタデータ エージェントを使用すると、スクリプトの互換性 (一致またはウォッチリスト) が向上します。新しい Plex TV シリーズ エージェントに移行することをお勧めします。Plex のエピソードの注文を Trakt の注文と比較して確認してください。エピソードの順序が異なっていても、ID で識別されるため問題はありません。ただし、シーズンまたはエピソードが Trakt (および tmdb) にない場合は同期できません。欠落しているエピソードを追加するか、tmdb でメタデータ (欠落している tvdb または imdb ID など) を編集するか、Trakt (回答) でメタデータの問題を報告することで修正できます。 tmdb では誰でも無料でサインアップして情報を編集できます。 Trakt は tmdb データから更新されます。
前述したように、Plex エージェントとファイルの編成に関する適切なプラクティスを必ず使用してください。前の回答で説明したように、エピソードが Trakt で欠落していないかどうかを確認し、外部 ID が tmdb に入力されているかどうかを確認してください。
シーズン 0 フォルダーには、シーズン 0 に属するエピソード (スペシャルとも呼ばれる) のみを含める必要があります。予告編、削除されたシーン、特集、インタビューなどは、Plex ルールに従って、別の Extra フォルダー (シーズン 0 ではない) に保存する必要があります。シーズン 0 は正式なものではないため、データソース (tmdb、imdb、tvdb) が対応していない場合があることに注意してください。 trakt.tv で番組のシーズン 0 をチェックして、特別なエピソードを確認してください。できる限り Plex ソースとして tmdb を使用してください。
最も簡単な方法は、各ユーザーのカスタム構成フォルダーを持つコンテナー (マルチユーザー docker-compose) を使用することです。
はい、docker を使用しています。ディスカッション ページを確認してください。
ディスカッションを確認してください。おそらく誰かがすでに質問して答えを見つけています。