Proyek ini menambahkan sinkronisasi dua arah antara trakt.tv dan Plex Media Server. Ini memerlukan akun trakt.tv tetapi tidak ada premium Plex dan tidak ada langganan VIP Trakt, tidak seperti aplikasi Plex yang disediakan oleh Trakt.
Awalnya dibuat oleh @Taxel, kini dikelola oleh kontributor.
Catatan: Kunci API PyTrakt tidak disimpan dengan aman, jadi jika Anda tidak ingin memiliki file yang berisi kunci tersebut di harddisk Anda, Anda tidak dapat menggunakan proyek ini.
Mencari cara untuk berkontribusi?
Skrip ini diketahui berfungsi dengan versi Python 3.9-3.13.
Instalasi dengan pipx.
pipx install PlexTraktSync
atau, untuk menginstal versi tertentu:
pipx install PlexTraktSync==0.15.2 --force
dan untuk meningkatkan:
plextraktsync self-update
yang baru saja memanggil pipx
dengan:
pipx upgrade PlexTraktSync
untuk menjalankan:
plextraktsync sync
CATATAN: instalasi pipx
akan menggunakan jalur khusus OS untuk Config, Logs, Cache, lihat dokumentasi platformdirs untuk detailnya atau periksa output dari perintah info.
Anda dapat mengatur file penulisan buruh pelabuhan seperti ini:
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
Anda dapat menggunakan versi tertentu 0.25.16
:
image: ghcr.io/taxel/plextraktsync:0.25.16
atau versi 0.25.x terbaru:
image: ghcr.io/taxel/plextraktsync:0.25
Catatan: main
adalah versi pengembangan dan pelaporan bug terhadap versi pengembangan tidak didukung.
Untuk menjalankan sinkronisasi:
docker compose run --rm plextraktsync sync
Penampung akan berhenti setelah sinkronisasi selesai. Baca bagian Pengaturan untuk menjalankannya secara otomatis pada interval yang ditentukan.
Ini untuk menginstal versi pengembangan untuk menguji apakah permintaan tarik akan memperbaiki beberapa masalah.
Lihat panduan kontribusi cara memasang kode dari permintaan tarik.
CATATAN: Metode instalasi ini tidak didukung. Ini didokumentasikan hanya berdasarkan kontribusi pengguna.
.zip
terbaru dari https://github.com/Taxel/PlexTraktSync/tagssetup.bat
untuk menginstal persyaratan dan membuat pintasan dan rutinitas opsional (memerlukan Windows 7sp1 - 11) .CATATAN: Metode instalasi ini tidak didukung. Ini didokumentasikan hanya berdasarkan kontribusi pengguna.
Opsi 1 untuk pembuatan kontainer: Buat kontainer Unraid manual dari PlexTraktSync:
ghcr.io/taxel/plextraktsync:latest
(atau tag apa pun yang Anda inginkan).-it
untuk mode interaktif.plextraktsync
untuk memulai proses kredensial yang dijelaskan di atas.Opsi 2 untuk pembuatan kontainer: Gunakan Plugin Unraid "Aplikasi Komunitas".
Setelah terinstal (atau jika sudah terinstal):
Jadwalkan (cron) penampung untuk memulai pada interval tertentu untuk memproses sinkronisasi
Setelah terinstal (atau jika sudah terinstal):
#!/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
CATATAN: Metode instalasi ini tidak didukung. Anda tidak akan mendapatkan dukungan jika menggunakan metode instalasi ini.
Menginstal dari GitHub dianggap sebagai mode pengembang, dan didokumentasikan di CONTRIBUTING.md.
Anda perlu membuat aplikasi Trakt API jika Anda belum memilikinya:
urn:ietf:wg:oauth:2.0:oob
sebagai url pengalihan Jalankan plextraktsync login
, skrip akan meminta kredensial yang hilang
Catatan Untuk mengatur kredensial di Docker Container, lihat bagian Jalankan Docker Container
Saat pertama kali dijalankan, Anda akan diminta untuk mengatur akses Trakt dan Plex.
Ikuti petunjuknya, kredensial dan kunci API Anda akan disimpan dalam file .env
dan .pytrakt.json
. URL Plex dan token disimpan di servers.yml
.
Jika Anda mengaktifkan Otentikasi 2 Faktor di Plex, masukkan kode saat diminta. Jika Anda belum mengaktifkan 2FA, biarkan saja promptnya kosong dan tekan Enter.
Cronjobs secara opsional dapat digunakan di Linux atau macOS untuk menjalankan skrip pada interval yang ditentukan.
Misalnya, untuk menjalankan skrip ini di cronjob setiap dua jam:
$ crontab -e
0 */2 * * * $HOME/.local/bin/plextraktsync sync
which plextraktsync
untuk menemukan file eksekusi plextraktsync sistem Anda dan perbarui sesuai kebutuhan.Selain cron, penjadwal buruh pelabuhan seperti Ofelia juga dapat digunakan untuk menjalankan skrip pada interval yang ditentukan.
Contoh penulisan buruh pelabuhan dengan interval 6 jam:
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
Untuk menonaktifkan sebagian fungsi perangkat lunak ini, lihat saja config.yml
. Saat pertama kali dijalankan, skrip akan membuat config.yml
berdasarkan config.default.yml
. Jika Anda ingin menyesuaikan pengaturan sebelum dijalankan pertama kali (mis. Anda tidak ingin sinkronisasi penuh), Anda dapat menyalin dan mengedit config.yml
sebelum meluncurkan skrip. Di sini, di bagian sinkronisasi, Anda dapat menonaktifkan hal-hal berikut dengan mengaturnya dari true
ke false
di editor teks:
Eksekusi skrip yang pertama akan memakan waktu lama (tergantung pada ukuran perpustakaan PMS Anda). Setelah itu, detail film dan daftar Trakt di-cache, sehingga akan berjalan lebih cepat untuk kedua kalinya. Namun hal ini berarti bahwa daftar Trakt tidak diperbarui secara dinamis (hal ini baik untuk daftar seperti "Nominasi Academy Award 2018" namun mungkin tidak ideal untuk daftar yang sering diperbarui). Berikut adalah waktu eksekusi di server Plex saya: Proses pertama - 1228 detik, proses kedua - 111 detik
Anda dapat melihat kemajuan sinkronisasi di file plextraktsync.log
yang akan dibuat.
Anda dapat menggunakan tanda --edit
atau --locate
ke perintah config
untuk membuka file konfigurasi di editor atau di browser file.
Secara default, semua perpustakaan diproses. Anda dapat menonaktifkan perpustakaan berdasarkan nama dengan mengubah excluded-libraries
di config.yml
.
Anda juga dapat mengatur excluded-libraries
per server di servers.yml
:
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
excluded-libraries :
- " Family Movies "
Selain itu, Anda hanya dapat mencantumkan perpustakaan yang akan diproses, dalam hal ini excluded-libraries
tidak akan digunakan untuk server ini.
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
libraries :
- " Movies "
- " TV Shows "
Anda dapat melihat daftar terakhir perpustakaan dengan perintah info:
$ plextraktsync --server=Example1 info
Enabled 2 libraries in Plex Server:
- 1: Movies
- 2: TV Shows
Jika Anda ingin menentukan konfigurasi per server, Anda dapat melakukannya di dalam servers.yml
. Di bagian config
konfigurasi server, Anda dapat menentukan cara kerja server tertentu.
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
sync :
plex_to_trakt :
collection : true
trakt_to_plex :
liked_lists : false
Menggunakan sync
dalam konfigurasi server akan menggantikan konfigurasi sinkronisasi global di config.yml
.
Ini juga dapat digunakan untuk memiliki konfigurasi berbeda antara perpustakaan yang berbeda. Untuk dapat melakukan ini, Anda menentukan jumlah server yang Anda perlukan (kemungkinan besar sama dengan jumlah pengaturan konfigurasi berbeda yang Anda perlukan). Misalnya:
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
Konfigurasi di atas akan membuat perpustakaan "Film" menyinkronkan peringkat dan status tontonan, sedangkan perpustakaan "Acara TV" hanya menyinkronkan peringkat. Untuk kemudian menjalankan sinkronisasi, Anda perlu menentukan --server Example1
atau --server Example2
untuk menjalankan sinkronisasi untuk server spesifik tersebut.
Menjalankan perintah sinkronisasi tanpa --server
akan menggunakan server default dari .env
Jika Anda ingin menjalankan pekerjaan ini menggunakan ofelia
, Anda dapat melakukannya dengan menjalankan sesuatu yang mirip dengan ini di docker-compose.yml
Anda :
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 "
Jika Anda hanya menjalankan satu kontainer PlexTraktSync, Anda perlu memastikan bahwa kedua pekerjaan Ofelia tidak berjalan secara bersamaan. Ofelia melewatkan penjadwalan pelaksanaan pekerjaan baru jika pekerjaan sebelumnya masih berjalan.
Bergantung pada berapa lama waktu yang dibutuhkan untuk menjalankan pekerjaan di server Anda, Anda mungkin harus memisahkan jadwal kedua pekerjaan tersebut dalam beberapa menit atau beberapa jam. Jika Anda memiliki dua kontainer PlexTraktSync berbeda di penulisan buruh pelabuhan, Anda dapat menjalankannya secara bersamaan.
Konfigurasi di atas berarti suatu pekerjaan berjalan setiap 6 jam, bergantian antara dua "server". Kontainer PlexTraktSync juga memiliki profil penulisan buruh pelabuhan yang disebut "jadwal" yang artinya tidak akan berjalan secara otomatis saat Anda menjalankannya, misalnya docker compose up
.
Tingkat logging secara default adalah INFO
. Ini dapat diubah menjadi DEBUG dengan mengedit variabel "debug" di config.yml
menjadi true
.
Secara default, log akan ditambahkan, jika Anda ingin mempertahankan log hanya dari proses terakhir Anda, edit variabel "tambahkan" di config.yml
menjadi false
.
Jalankan plextraktsync --help
untuk melihat perintah yang tersedia. Jalankan plextraktsync COMMAND --help
untuk melihat bantuan untuk COMMAND
.
$ 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
Anda dapat menyumbangkan sendiri dokumentasi yang hilang.
Subperintah sync
mendukung opsi --sync=shows
dan --sync=movies
, sehingga Anda hanya dapat menyinkronkan tipe pustaka tertentu. Atau hanya daftar pantauan: --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.
Anda dapat menggunakan perintah unmatched
untuk memindai perpustakaan Anda dan menampilkan film yang tidak cocok.
Dukungan untuk acara yang tak tertandingi belum diterapkan.
plextraktsync unmatched
Perintah info dapat digunakan untuk mencetak versi paket, informasi akun, lokasi direktori Cache, Config dan Logs
$ 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']
Perintah inspeksi digunakan untuk mendapatkan info tentang item Plex Media Server, yang berguna saat men-debug masalah dan melaporkan masalah.
123
plextraktsync inspect 123
plextraktsync inspect "https://app.plex.tv/desktop/#!/server/53aff62c4bb6027c1ada814d417e83ccdf4d5045/details?key=/library/metadata/123"
Untuk menghindari masalah dengan berbagai shell, beri nilai dalam tanda kutip ganda.
Anda dapat menggunakan perintah watch
untuk mendengarkan acara dari Plex Media Server dan pemutaran scrobble.
Apa itu scrobble?
Scrobbling berarti melacak secara otomatis apa yang Anda tonton. Alih-alih memeriksa situs web dari ponsel Anda, perintah ini berjalan di latar belakang dan secara otomatis melakukan scrobble kembali ke Trakt selagi Anda menikmati menonton media Anda - Plex [email protected]
Untuk membatasi scrobbling hanya untuk pengguna Anda (disarankan), atur yang berikut ini di config.yml
Anda:
watch :
username_filter : true
Untuk menjalankan perintah watch
:
plextraktsync watch
atau
docker compose run --rm plextraktsync watch
atau tambahkan command: watch
untuk buruh pelabuhan menulis file, dan docker compose up -d plextraktsync
untuk memulai wadah terlepas:
version : " 2 "
services :
plextraktsync :
image : ghcr.io/taxel/plextraktsync
volumes :
- ./config:/app/config
command : watch
Buat unit systemd sehingga scrobble secara otomatis di latar belakang:
[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
Catatan, tergantung pada metode instalasi Anda, Anda mungkin perlu mengatur perintah ExecStart sebagai berikut:
ExecStart =/path/to/plextraktsync/plextraktsync.sh watch
Setelah itu Anda harus mengaktifkan layanan:
sudo systemctl daemon-reload
sudo systemctl start PlexTraktSync.service
sudo systemctl enable PlexTraktSync.service
Anda juga dapat menjalankan sebagai layanan pengguna systemd.
Panduan ini memungkinkan untuk menggunakan server berbeda dengan konfigurasi yang sama.
Ini mengasumsikan plextraktsync
diinstal dengan pipx
untuk pengguna Anda.
# [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
Instal file templat layanan:
root
: /etc/xdg/systemd/user/[email protected]
untuk semua pengguna~/.config/systemd/user/[email protected]
hanya untuk pengguna AndaSelanjutnya, Anda perlu memuat ulang systemd:
root
: sudo systemctl daemon-reload
systemctl --user daemon-reload
Sekarang buat instance berdasarkan nama server dari servers.yml
, dalam contoh ini SERVER_NAME
.
systemctl --user start "plextraktsync@SERVER_NAME.service"
systemctl --user status "plextraktsync@SERVER_NAME.service"
untuk log lengkap, Anda dapat menggunakan journalctl
(tambahkan -f
untuk mengikuti log):
journalctl --user -u "plextraktsync@SERVER_NAME.service"
Jika semuanya berfungsi, aktifkan untuk memulai otomatis saat host reboot
systemctl --user enable "plextraktsync@SERVER_NAME.service"
Agar sesi systemd --user dapat dimulai tanpa harus masuk, Anda harus mengaktifkan systemd-linger:
loginctl enable-linger
Plex Movie
dan Plex TV Series
default meningkatkan kompatibilitas skrip (untuk pencocokan atau untuk daftar pantauan). Disarankan untuk bermigrasi ke agen Plex TV Series yang baru.Periksa pemesanan episode Plex Anda dibandingkan dengan pemesanan Trakt. Jika episode berada dalam urutan yang berbeda, hal ini tidak akan menjadi masalah karena mereka diidentifikasi dengan id. Namun jika ada season atau episode yang hilang di Trakt (dan tmdb), maka tidak dapat disinkronkan. Anda dapat memperbaikinya dengan menambahkan episode yang hilang atau mengedit metadata (mis. ID tvdb atau imdb yang hilang) di tmdb atau melaporkan masalah metadata di Trakt (jawaban). Gratis bagi siapa saja untuk mendaftar dan mengedit info di tmdb. Trakt akan memperbarui dari data tmdb.
Pastikan Anda menggunakan praktik yang baik tentang agen Plex dan organisasi file seperti yang dinyatakan di atas. Periksa apakah episode tidak hilang di Trakt seperti yang dijelaskan dalam jawaban sebelumnya, dan periksa apakah id eksternal diisi di tmdb.
Folder Musim 0 hanya boleh berisi episode-episode milik Musim 0, yang juga diberi nama spesial. Trailer, adegan yang dihapus, fitur, wawancara,... harus disimpan dalam folder Ekstra terpisah (bukan di season 0) sesuai aturan Plex. Ingatlah bahwa season 0 tidak benar-benar resmi sehingga sumber data (tmdb, imdb, dan tvdb) terkadang tidak sesuai. Periksa acara season 0 di trakt.tv untuk mengidentifikasi episode khusus tersebut. Gunakan tmdb sebagai sumber Plex sebanyak yang Anda bisa.
Cara termudah adalah dengan menggunakan container dengan folder konfigurasi khusus untuk setiap pengguna: Multi-User docker-compose.
Ya menggunakan buruh pelabuhan, periksa halaman Diskusi.
Cek Diskusi, mungkin sudah ada yang bertanya dan menemukan jawabannya.