Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor: Optimize resolve_guid to check only once positive providers #1750

Merged
merged 3 commits into from
Jan 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading