Jellyfin/emby: Combine info/version, add typing for versions

Signed-off-by: Luis Garcia <git@luigi311.com>
pull/210/head
Luis Garcia 2024-11-09 14:11:30 -07:00
parent 58749a4fb8
commit e1c65fc082
3 changed files with 13 additions and 22 deletions

View File

@ -1,5 +1,5 @@
from src.jellyfin_emby import JellyfinEmby from src.jellyfin_emby import JellyfinEmby
from packaging import version from packaging.version import (parse, Version)
class Emby(JellyfinEmby): class Emby(JellyfinEmby):
@ -21,5 +21,5 @@ class Emby(JellyfinEmby):
server_type="Emby", baseurl=baseurl, token=token, headers=headers server_type="Emby", baseurl=baseurl, token=token, headers=headers
) )
def is_partial_update_supported(self, server_version): def is_partial_update_supported(self, server_version: Version) -> bool:
return server_version > version.parse("4.4") return server_version > parse("4.4")

View File

@ -1,5 +1,5 @@
from src.jellyfin_emby import JellyfinEmby from src.jellyfin_emby import JellyfinEmby
from packaging import version from packaging.version import (parse, Version)
class Jellyfin(JellyfinEmby): class Jellyfin(JellyfinEmby):
@ -21,5 +21,5 @@ class Jellyfin(JellyfinEmby):
server_type="Jellyfin", baseurl=baseurl, token=token, headers=headers server_type="Jellyfin", baseurl=baseurl, token=token, headers=headers
) )
def is_partial_update_supported(self, server_version): def is_partial_update_supported(self, server_version: Version) -> bool:
return server_version >= version.parse("10.9.0") return server_version >= parse("10.9.0")

View File

@ -2,9 +2,10 @@
import traceback, os import traceback, os
from math import floor from math import floor
from typing import Union
from dotenv import load_dotenv from dotenv import load_dotenv
import requests import requests
from packaging import version from packaging.version import (parse, Version)
from src.functions import ( from src.functions import (
logger, logger,
@ -172,7 +173,7 @@ class JellyfinEmby:
) )
raise Exception(e) raise Exception(e)
def info(self, name_only: bool = False) -> str: def info(self, name_only: bool = False, version_only: bool = False) -> Union[str | Version]:
try: try:
query_string = "/System/Info/Public" query_string = "/System/Info/Public"
@ -181,6 +182,9 @@ class JellyfinEmby:
if response: if response:
if name_only: if name_only:
return f"{response['ServerName']}" return f"{response['ServerName']}"
elif version_only:
return parse(response["Version"])
return f"{self.server_type} {response['ServerName']}: {response['Version']}" return f"{self.server_type} {response['ServerName']}: {response['Version']}"
else: else:
return None return None
@ -189,19 +193,6 @@ class JellyfinEmby:
logger(f"{self.server_type}: Get server name failed {e}", 2) logger(f"{self.server_type}: Get server name failed {e}", 2)
raise Exception(e) raise Exception(e)
def get_server_version(self):
try:
response = self.query("/System/Info/Public", "get")
if response:
return version.parse(response["Version"])
else:
return None
except Exception as e:
logger(f"{self.server_type}: Get server version failed: {e}", 2)
raise Exception(e)
def get_users(self): def get_users(self):
try: try:
users = {} users = {}
@ -725,7 +716,7 @@ class JellyfinEmby:
self, watched_list, user_mapping=None, library_mapping=None, dryrun=False self, watched_list, user_mapping=None, library_mapping=None, dryrun=False
): ):
try: try:
server_version = self.get_server_version() server_version = self.info(version_only=True)
update_partial = self.is_partial_update_supported(server_version) update_partial = self.is_partial_update_supported(server_version)
if not update_partial: if not update_partial: