From 79742dafa99bce296f7be00da9e038e603e41a92 Mon Sep 17 00:00:00 2001 From: joncrall Date: Sun, 17 Dec 2023 16:47:29 -0500 Subject: [PATCH 1/4] Add calls for media folders Co-authored-by: qishen --- jellyfin_apiclient_python/api.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/jellyfin_apiclient_python/api.py b/jellyfin_apiclient_python/api.py index a0a06e8..b15fdd4 100644 --- a/jellyfin_apiclient_python/api.py +++ b/jellyfin_apiclient_python/api.py @@ -115,6 +115,30 @@ def users(self, handler="", action="GET", params=None, json=None): else: return self._get("Users/{UserId}%s" % handler, params) + def media_folders(self, handler="", params=None, json=None): + return self._get("Library/MediaFolders/", params) + + def virtual_folders(self, handler="", action="GET", params=None, json=None): + if action == "POST": + return self._post("Library/VirtualFolders", json, params) + elif action == "DELETE": + return self._delete("Library/VirtualFolders", params) + else: + return self._get("Library/VirtualFolders", params) + + def physical_paths(self, handler="", params=None, json=None): + return self._get("Library/PhysicalPaths/", params) + + def folder_contents(self, abspath="/", params={}, json=None): + params['path'] = abspath + params['includeFiles'] = params['includeFiles'] if 'includeFiles' in params else True + params['includeDirectories'] = params['includeDirectories'] if 'includeDirectories' in params else True + return self._get("Environment/DirectoryContents", params) + + def scan_library(self): + return self._post("Library/Refresh") + + def items(self, handler="", action="GET", params=None, json=None): if action == "POST": return self._post("Items%s" % handler, json, params) From a33be83513ba26ea8501358ad3b85bd18fb0e58e Mon Sep 17 00:00:00 2001 From: joncrall Date: Sun, 17 Dec 2023 16:53:55 -0500 Subject: [PATCH 2/4] Use dict get --- jellyfin_apiclient_python/api.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jellyfin_apiclient_python/api.py b/jellyfin_apiclient_python/api.py index b15fdd4..3cfe580 100644 --- a/jellyfin_apiclient_python/api.py +++ b/jellyfin_apiclient_python/api.py @@ -131,8 +131,8 @@ def physical_paths(self, handler="", params=None, json=None): def folder_contents(self, abspath="/", params={}, json=None): params['path'] = abspath - params['includeFiles'] = params['includeFiles'] if 'includeFiles' in params else True - params['includeDirectories'] = params['includeDirectories'] if 'includeDirectories' in params else True + params['includeFiles'] = params.get('includeFiles', True) + params['includeDirectories'] = params.get('includeDirectories', True) return self._get("Environment/DirectoryContents", params) def scan_library(self): From 012065028634a45ac38144b610610727444690e1 Mon Sep 17 00:00:00 2001 From: joncrall Date: Sun, 17 Dec 2023 16:54:19 -0500 Subject: [PATCH 3/4] rename scan_library to refresh_library --- jellyfin_apiclient_python/api.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/jellyfin_apiclient_python/api.py b/jellyfin_apiclient_python/api.py index 3cfe580..2a5231a 100644 --- a/jellyfin_apiclient_python/api.py +++ b/jellyfin_apiclient_python/api.py @@ -135,10 +135,12 @@ def folder_contents(self, abspath="/", params={}, json=None): params['includeDirectories'] = params.get('includeDirectories', True) return self._get("Environment/DirectoryContents", params) - def scan_library(self): + def refresh_library(self): + """ + Starts a library scan. + """ return self._post("Library/Refresh") - def items(self, handler="", action="GET", params=None, json=None): if action == "POST": return self._post("Items%s" % handler, json, params) From 1bd3ab6324ad7f506e2d2f75c0ddb0470eca4c7f Mon Sep 17 00:00:00 2001 From: joncrall Date: Sun, 21 Jan 2024 13:19:27 -0500 Subject: [PATCH 4/4] Remove unused params, avoid mutating params --- jellyfin_apiclient_python/api.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/jellyfin_apiclient_python/api.py b/jellyfin_apiclient_python/api.py index 2a5231a..79d6eb5 100644 --- a/jellyfin_apiclient_python/api.py +++ b/jellyfin_apiclient_python/api.py @@ -115,10 +115,10 @@ def users(self, handler="", action="GET", params=None, json=None): else: return self._get("Users/{UserId}%s" % handler, params) - def media_folders(self, handler="", params=None, json=None): + def media_folders(self, params=None): return self._get("Library/MediaFolders/", params) - def virtual_folders(self, handler="", action="GET", params=None, json=None): + def virtual_folders(self, action="GET", params=None, json=None): if action == "POST": return self._post("Library/VirtualFolders", json, params) elif action == "DELETE": @@ -126,10 +126,11 @@ def virtual_folders(self, handler="", action="GET", params=None, json=None): else: return self._get("Library/VirtualFolders", params) - def physical_paths(self, handler="", params=None, json=None): + def physical_paths(self, params=None): return self._get("Library/PhysicalPaths/", params) - def folder_contents(self, abspath="/", params={}, json=None): + def folder_contents(self, abspath="/", params=None, json=None): + params = {} if params is None else params.copy() params['path'] = abspath params['includeFiles'] = params.get('includeFiles', True) params['includeDirectories'] = params.get('includeDirectories', True)