Dieses Projekt fügt eine bidirektionale Synchronisierung zwischen trakt.tv und Plex Media Server hinzu. Es erfordert ein trakt.tv-Konto, aber kein Plex Premium und keine Trakt VIP-Abonnements, im Gegensatz zur Plex-App von Trakt.
Ursprünglich von @Taxel erstellt, jetzt von Mitwirkenden gepflegt.
Hinweis: Die PyTrakt-API-Schlüssel werden nicht sicher gespeichert. Wenn Sie also keine Datei mit diesen Schlüsseln auf Ihrer Festplatte haben möchten, können Sie dieses Projekt nicht verwenden.
Suchen Sie nach einer Möglichkeit, einen Beitrag zu leisten?
Es ist bekannt, dass das Skript mit den Python-Versionen 3.9–3.13 funktioniert.
Installation mit pipx.
pipx install PlexTraktSync
oder um eine bestimmte Version zu installieren:
pipx install PlexTraktSync==0.15.2 --force
und zum Upgrade:
plextraktsync self-update
was einfach pipx
aufruft mit:
pipx upgrade PlexTraktSync
ausführen:
plextraktsync sync
HINWEIS: Bei der Installation pipx
werden betriebssystemspezifische Pfade für Konfiguration, Protokolle und Cache verwendet. Weitere Informationen finden Sie in der Dokumentation zu „platformdirs“ oder überprüfen Sie die Ausgabe des Befehls „info“.
Sie können die Docker-Compose-Datei wie folgt einrichten:
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
Sie können die spezifische Version 0.25.16
verwenden:
image: ghcr.io/taxel/plextraktsync:0.25.16
oder neueste Version 0.25.x:
image: ghcr.io/taxel/plextraktsync:0.25
Hinweis: main
ist eine Entwicklungsversion und das Melden von Fehlern für Entwicklungsversionen wird nicht unterstützt.
So führen Sie die Synchronisierung aus:
docker compose run --rm plextraktsync sync
Der Container stoppt, nachdem die Synchronisierung abgeschlossen ist. Lesen Sie den Abschnitt „Setup“, um es in festgelegten Intervallen automatisch auszuführen.
Hiermit wird die Entwicklungsversion installiert, um zu testen, ob eine Pull-Anfrage ein Problem beheben würde.
Sehen Sie sich die beitragende Anleitung zum Installieren von Code aus einer Pull-Anfrage an.
HINWEIS: Diese Installationsmethode wird nicht unterstützt. Es wird ausschließlich durch Benutzerbeiträge dokumentiert.
.zip
Version von https://github.com/Taxel/PlexTraktSync/tags heruntersetup.bat
aus, um die Anforderungen zu installieren und optionale Verknüpfungen und Routinen zu erstellen (erfordert Windows 7sp1 – 11) .HINWEIS: Diese Installationsmethode wird nicht unterstützt. Es wird ausschließlich durch Benutzerbeiträge dokumentiert.
Option 1 zur Containererstellung: Erstellen Sie einen manuellen Unraid-Container von PlexTraktSync:
ghcr.io/taxel/plextraktsync:latest
(oder ein beliebiges Tag) ein.-it
für den interaktiven Modus ein.plextraktsync
ein, um den oben beschriebenen Anmeldeinformationsprozess zu starten.Option 2 für die Containererstellung: Nutzen Sie das Unraid-Plugin „Community Apps“.
Einmal installiert (oder falls bereits installiert):
Planen Sie (cron), dass der Container in bestimmten Intervallen startet, um die Synchronisierung zu verarbeiten
Einmal installiert (oder falls bereits installiert):
#!/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
HINWEIS: Diese Installationsmethode wird nicht unterstützt. Wenn Sie diese Installationsmethode verwenden, erhalten Sie keinen Support.
Die Installation über GitHub gilt als Entwicklermodus und ist in CONTRIBUTING.md dokumentiert.
Sie müssen eine Trakt-API-App erstellen, falls Sie noch keine haben:
urn:ietf:wg:oauth:2.0:oob
als Weiterleitungs-URL ein Führen Sie plextraktsync login
aus. Das Skript fragt nach fehlenden Anmeldeinformationen
Hinweis Informationen zum Einrichten der Anmeldeinformationen im Docker-Container finden Sie im Abschnitt „Den Docker-Container ausführen“.
Beim ersten Start werden Sie aufgefordert, den Trakt- und Plex-Zugriff einzurichten.
Befolgen Sie die Anweisungen. Ihre Anmeldeinformationen und API-Schlüssel werden in den Dateien .env
und .pytrakt.json
gespeichert. Plex-URL und Token werden in servers.yml
gespeichert.
Wenn Sie auf Plex die 2-Faktor-Authentifizierung aktiviert haben, geben Sie den Code ein, wenn Sie dazu aufgefordert werden. Wenn Sie 2FA nicht aktiviert haben, lassen Sie die Eingabeaufforderung einfach leer und drücken Sie die Eingabetaste.
Cronjobs können optional unter Linux oder macOS verwendet werden, um das Skript in festgelegten Intervallen auszuführen.
Um dieses Skript beispielsweise alle zwei Stunden in einem Cronjob auszuführen:
$ crontab -e
0 */2 * * * $HOME/.local/bin/plextraktsync sync
which plextraktsync
um die ausführbare Datei „plextraktsync“ Ihres Systems zu finden und sie entsprechend zu aktualisieren.Anstelle von Cron kann auch ein Docker-Scheduler wie Ofelia verwendet werden, um das Skript in festgelegten Abständen auszuführen.
Ein Docker-Compose-Beispiel mit einem 6-Stunden-Intervall:
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
Um Teile der Funktionalität dieser Software zu deaktivieren, sind Sie bei config.yml
genau richtig. Bei der ersten Ausführung erstellt das Skript config.yml
basierend auf config.default.yml
. Wenn Sie die Einstellungen vor der ersten Ausführung anpassen möchten (z. B. keine vollständige Synchronisierung wünschen), können Sie config.yml
kopieren und bearbeiten, bevor Sie das Skript starten. Hier im Abschnitt „Synchronisierung“ können Sie die folgenden Dinge deaktivieren, indem Sie sie in einem Texteditor von true
auf false
setzen:
Die erste Ausführung des Skripts wird (abhängig von der Größe Ihrer PMS-Bibliothek) lange dauern. Danach werden Filmdetails und Trakt-Listen zwischengespeichert, sodass es beim zweiten Mal viel schneller laufen sollte. Dies bedeutet jedoch, dass Trakt-Listen nicht dynamisch aktualisiert werden (was für Listen wie „Oscar-Nominierte 2018“ in Ordnung ist, für Listen, die häufig aktualisiert werden, jedoch möglicherweise nicht ideal ist). Hier sind die Ausführungszeiten auf meinem Plex-Server: Erster Lauf – 1228 Sekunden, zweiter Lauf – 111 Sekunden
Sie können den Synchronisierungsfortschritt in der Datei plextraktsync.log
anzeigen, die erstellt wird.
Sie können die Flags --edit
oder --locate
für den config
verwenden, um die Konfigurationsdatei im Editor oder im Dateibrowser zu öffnen.
Standardmäßig werden alle Bibliotheken verarbeitet. Sie können Bibliotheken nach Namen deaktivieren, indem Sie excluded-libraries
in config.yml
ändern.
Sie können in servers.yml
auch excluded-libraries
pro Server festlegen:
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
excluded-libraries :
- " Family Movies "
Darüber hinaus können Sie nur zu verarbeitende Bibliotheken auflisten. In diesem Fall werden global excluded-libraries
für diesen Server nicht verwendet.
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
libraries :
- " Movies "
- " TV Shows "
Sie können die endgültige Liste der Bibliotheken mit dem Befehl info sehen:
$ plextraktsync --server=Example1 info
Enabled 2 libraries in Plex Server:
- 1: Movies
- 2: TV Shows
Wenn Sie Ihre Konfiguration pro Server angeben möchten, können Sie dies in servers.yml
tun. Im config
der Serverkonfiguration können Sie angeben, wie dieser bestimmte Server funktionieren soll.
servers :
Example1 :
token : ~
urls :
- http://localhost:32400
config :
sync :
plex_to_trakt :
collection : true
trakt_to_plex :
liked_lists : false
Die Verwendung von sync
in einer Serverkonfiguration überschreibt die globale sync-config in config.yml
.
Dies kann auch verwendet werden, um unterschiedliche Konfigurationen zwischen verschiedenen Bibliotheken zu haben. Um dies tun zu können, geben Sie die Anzahl der benötigten Server an (höchstwahrscheinlich gleich der Anzahl der verschiedenen Konfigurationseinstellungen, die Sie benötigen). Zum Beispiel:
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
Die obige Konfiguration würde dafür sorgen, dass die Bibliothek „Filme“ sowohl Bewertungen als auch den Wiedergabestatus synchronisiert, während die Bibliothek „TV-Sendungen“ nur Bewertungen synchronisiert. Um dann die Synchronisierung auszuführen, müssen Sie --server Example1
oder --server Example2
angeben, um die Synchronisierung für diesen bestimmten Server auszuführen.
Wenn Sie den Synchronisierungsbefehl ohne --server
ausführen, wird der Standardserver aus .env
verwendet
Wenn Sie diese Jobs mit ofelia
ausführen möchten, können Sie dies tun, indem Sie in Ihrer docker-compose.yml
etwas Ähnliches ausführen:
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 "
Wenn Sie nur einen PlexTraktSync-Container ausführen, müssen Sie sicherstellen, dass die beiden Ofelia-Jobs nicht gleichzeitig ausgeführt werden. Ofelia überspringt die Planung einer neuen Jobausführung, wenn der vorherige Job noch ausgeführt wird.
Abhängig davon, wie lange es dauert, bis der Job auf Ihrem Server ausgeführt wird, müssen Sie den Zeitplan der beiden Jobs möglicherweise um einige Minuten oder einige Stunden trennen. Wenn Sie zwei verschiedene PlexTraktSync-Container in Ihrem Docker Compose haben, können Sie diese gleichzeitig ausführen.
Die obige Konfiguration bedeutet, dass alle 6 Stunden ein Job abwechselnd zwischen den beiden „Servern“ ausgeführt wird. Der PlexTraktSync-Container verfügt außerdem über ein Docker-Compose-Profil namens „schedule“, was bedeutet, dass er nicht automatisch ausgeführt wird, wenn Sie beispielsweise docker compose up
ausführen.
Die Protokollierungsebene ist standardmäßig INFO
. Dies kann in DEBUG geändert werden, indem die Variable „debug“ in config.yml
auf true
geändert wird.
Standardmäßig werden die Protokolle angehängt. Wenn Sie nur das Protokoll Ihres letzten Laufs beibehalten möchten, bearbeiten Sie die Variable „append“ in config.yml
auf false
.
Führen Sie plextraktsync --help
aus, um die verfügbaren Befehle anzuzeigen. Führen Sie plextraktsync COMMAND --help
aus, um Hilfe für COMMAND
anzuzeigen.
$ 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
Fehlende Unterlagen können Sie selbst beisteuern.
Der Unterbefehl sync
unterstützt die Optionen --sync=shows
und --sync=movies
, sodass Sie nur bestimmte Bibliothekstypen synchronisieren können. Oder nur Watchlist: --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.
Mit dem Befehl unmatched
können Sie Ihre Bibliothek durchsuchen und nicht übereinstimmende Filme anzeigen.
Die Unterstützung für nicht angepasste Shows ist noch nicht implementiert.
plextraktsync unmatched
Mit dem Befehl info können Paketversionen, Kontoinformationen, Speicherorte der Cache-, Konfigurations- und Protokollverzeichnisse gedruckt werden
$ 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']
Der Befehl „Inspect“ wird verwendet, um Informationen zu Plex Media Server-Elementen abzurufen, was beim Debuggen von Problemen und beim Melden von Problemen hilfreich ist.
123
plextraktsync inspect 123
plextraktsync inspect "https://app.plex.tv/desktop/#!/server/53aff62c4bb6027c1ada814d417e83ccdf4d5045/details?key=/library/metadata/123"
Um Probleme mit verschiedenen Shells zu vermeiden, setzen Sie den Wert in doppelte Anführungszeichen.
Sie können den Befehl watch
verwenden, um Ereignisse vom Plex Media Server und Scrobble-Wiedergaben abzuhören.
Was ist Scrobbeln?
Scrobbeln bedeutet einfach, automatisch zu verfolgen, was Sie gerade ansehen. Anstatt von Ihrem Telefon aus auf die Website zuzugreifen, läuft dieser Befehl im Hintergrund und scrollt automatisch zurück zu Trakt, während Sie Ihre Medien genießen – Plex [email protected]
Um das Scrobbeln nur auf Ihren Benutzer zu beschränken (empfohlen), legen Sie Folgendes in Ihrer config.yml
fest:
watch :
username_filter : true
So führen Sie watch
-Befehl aus:
plextraktsync watch
oder
docker compose run --rm plextraktsync watch
oder fügen Sie command: watch
zur Docker-Compose-Datei und docker compose up -d plextraktsync
um den Container getrennt zu starten:
version : " 2 "
services :
plextraktsync :
image : ghcr.io/taxel/plextraktsync
volumes :
- ./config:/app/config
command : watch
Erstellen Sie eine systemd-Einheit, damit diese automatisch im Hintergrund scrobbelt:
[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
Beachten Sie, dass Sie Ihren ExecStart-Befehl je nach Installationsmethode möglicherweise wie folgt festlegen müssen:
ExecStart =/path/to/plextraktsync/plextraktsync.sh watch
Anschließend müssen Sie den Dienst aktivieren:
sudo systemctl daemon-reload
sudo systemctl start PlexTraktSync.service
sudo systemctl enable PlexTraktSync.service
Sie können den Dienst auch als systemd-Benutzerdienst ausführen.
Dieser Walkthrough ermöglicht die Verwendung verschiedener Server mit derselben Konfiguration.
Dies setzt voraus, dass plextraktsync
mit pipx
für Ihren Benutzer installiert wird.
# [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
Installieren Sie die Dienstvorlagendatei:
root
: /etc/xdg/systemd/user/[email protected]
für alle Benutzer~/.config/systemd/user/[email protected]
nur für Ihren BenutzerAls nächstes müssen Sie systemd neu laden:
root
: sudo systemctl daemon-reload
systemctl --user daemon-reload
Erstellen Sie nun Instanzen basierend auf Servernamen aus servers.yml
, in diesem Beispiel SERVER_NAME
.
systemctl --user start "plextraktsync@SERVER_NAME.service"
systemctl --user status "plextraktsync@SERVER_NAME.service"
Für vollständige Protokolle können Sie journalctl
verwenden (fügen Sie -f
hinzu, um den Protokollen zu folgen):
journalctl --user -u "plextraktsync@SERVER_NAME.service"
Wenn alles funktioniert, aktivieren Sie den automatischen Start beim Neustart des Hosts
systemctl --user enable "plextraktsync@SERVER_NAME.service"
Damit die systemd --user-Sitzung ohne Anmeldung gestartet werden kann, müssen Sie systemd-linger aktivieren:
loginctl enable-linger
Plex Movie
und Plex TV Series
wird die Skriptkompatibilität verbessert (für den Abgleich oder für die Beobachtungsliste). Es wird empfohlen, auf den neuen Plex TV Series-Agenten zu migrieren.Überprüfen Sie die Bestellung Ihrer Plex-Episoden im Vergleich zur Bestellung von Trakt. Wenn Episoden in einer anderen Reihenfolge vorliegen, sollte dies kein Problem darstellen, da sie mit IDs identifiziert werden. Wenn jedoch eine Staffel oder eine Episode auf Trakt (und tmdb) fehlt, kann sie nicht synchronisiert werden. Sie können das Problem beheben, indem Sie die fehlenden Episoden hinzufügen oder Metadaten (z. B. fehlende tvdb- oder imdb-IDs) auf tmdb bearbeiten oder ein Metadatenproblem auf Trakt (Antworten) melden. Es ist für jeden kostenlos, sich bei tmdb anzumelden und Informationen zu bearbeiten. Trakt wird anhand der tmdb-Daten aktualisiert.
Stellen Sie sicher, dass Sie die oben genannten bewährten Methoden zur Plex-Agenten- und Dateiorganisation anwenden. Überprüfen Sie, ob Episoden auf Trakt fehlen, wie in der vorherigen Antwort erläutert, und prüfen Sie, ob externe IDs in tmdb eingetragen sind.
Der Ordner „Staffel 0“ darf nur Episoden enthalten, die zur Staffel 0 gehören und auch als „Specials“ bezeichnet werden. Trailer, gelöschte Szenen, Featurettes, Interviews usw. müssen gemäß den Plex-Regeln in einem separaten Extra-Ordner (nicht in Staffel 0) gespeichert werden. Bedenken Sie, dass Staffel 0 nicht wirklich offiziell ist und die Datenquellen (tmdb, imdb und tvdb) daher manchmal nicht übereinstimmen. Sehen Sie sich Staffel 0 der Sendungen auf trakt.tv an, um diese besonderen Episoden zu identifizieren. Verwenden Sie tmdb so oft wie möglich als Plex-Quelle.
Der einfachste Weg ist die Verwendung von Containern mit benutzerdefinierten Konfigurationsordnern für jeden Benutzer: Multi-User Docker-Compose.
Ja, verwenden Sie Docker. Überprüfen Sie die Seite „Diskussionen“.
Schauen Sie sich die Diskussionen an, vielleicht hat jemand bereits gefragt und die Antwort gefunden.