Skip to content

Commit

Permalink
Merge pull request #1750 from glensc/skip-reasons
Browse files Browse the repository at this point in the history
Refactor: Optimize resolve_guid to check only once positive providers
  • Loading branch information
glensc authored Jan 20, 2024
2 parents 34679ed + 0531155 commit 496a212
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 9 deletions.
21 changes: 13 additions & 8 deletions plextraktsync/media/MediaFactory.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,16 +41,21 @@ def resolve_any(self, pm: PlexLibraryItem, show: Media = None) -> Media | None:
return None

def resolve_guid(self, guid: PlexGuid, show: Media = None):
if guid.provider in ["youtube", "xmltv"]:
logger.debug(f"{guid.title_link}: Skipping {guid} because unsupported provider '{guid.provider}'", extra={"markup": True})
return None
if not guid.syncable:
error = f"{guid.title_link}: Skipping {guid} because"

if guid.unsupported:
level = "debug"
reason = f"unsupported provider '{guid.provider}'"
elif guid.local:
level = "warning"
reason = f"provider '{guid.provider}' has no external Id"
else:
level = "error"
reason = "is not a valid provider"

if guid.provider in ["local", "none", "agents.none"]:
logger.warning(f"{guid.title_link}: Skipping {guid} because provider {guid.provider} has no external Id", extra={"markup": True})
return None
getattr(logger, level)(f"{error} {reason}", extra={"markup": True})

if guid.provider not in ["imdb", "tmdb", "tvdb"]:
logger.error(f"{guid.title_link}: '{guid.provider}' is not valid provider from {guid}", extra={"markup": True})
return None

try:
Expand Down
15 changes: 15 additions & 0 deletions plextraktsync/plex/PlexGuid.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,21 @@ def is_episode(self):

return len(parts) == 3 and all(x.isnumeric() for x in parts)

@property
def syncable(self):
"""Is the provider syncable with trakt"""
return self.provider in ["imdb", "tmdb", "tvdb"]

@property
def local(self):
"""Is the provider local"""
return self.provider in ["local", "none", "agents.none"]

@property
def unsupported(self):
"""Known providers that can't be synced"""
return self.provider in ["youtube", "xmltv"]

@cached_property
def show_id(self):
if not self.is_episode:
Expand Down
3 changes: 2 additions & 1 deletion plextraktsync/plex/PlexLibraryItem.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,8 @@ def title(self):
if self.type == "episode":
value = f"{self.item.grandparentTitle}/{self.item.seasonEpisode}/{value}"

value = f"{value} ({self.item.year})"
if self.item.year:
value = f"{value} ({self.item.year})"

return value

Expand Down

0 comments on commit 496a212

Please sign in to comment.