diff --git a/plextraktsync/queue/TraktScrobbleWorker.py b/plextraktsync/queue/TraktScrobbleWorker.py index 0e1dcabf5bc..83671fb09bc 100644 --- a/plextraktsync/queue/TraktScrobbleWorker.py +++ b/plextraktsync/queue/TraktScrobbleWorker.py @@ -2,6 +2,8 @@ from typing import TYPE_CHECKING +from trakt.errors import ConflictException + from plextraktsync.decorators.rate_limit import rate_limit from plextraktsync.decorators.retry import retry from plextraktsync.decorators.time_limit import time_limit @@ -31,10 +33,10 @@ def __call__(self, queues): queues[name].clear() def submit(self, name, items): - method = getattr(self, name) + name = name.replace("scrobble_", "") results = [] for scrobbler, progress in self.normalize(items).items(): - res = method(scrobbler, progress) + res = self.scrobble(scrobbler, name, progress) results.append(res) if results: @@ -43,20 +45,12 @@ def submit(self, name, items): @rate_limit() @time_limit() @retry() - def scrobble_update(self, scrobbler: Scrobbler, progress: float): - return scrobbler.update(progress) - - @rate_limit() - @time_limit() - @retry() - def scrobble_pause(self, scrobbler: Scrobbler, progress: float): - return scrobbler.pause(progress) - - @rate_limit() - @time_limit() - @retry() - def scrobble_stop(self, scrobbler: Scrobbler, progress: float): - return scrobbler.stop(progress) + def scrobble(self, scrobbler: Scrobbler, name: str, progress: float): + method = getattr(scrobbler, name) + try: + return method(progress) + except ConflictException: + return @staticmethod def normalize(items: list[TraktPlayable]):