File tree Expand file tree Collapse file tree 3 files changed +17
-3
lines changed
Expand file tree Collapse file tree 3 files changed +17
-3
lines changed Original file line number Diff line number Diff line change 1717MediaContainerT = TypeVar ("MediaContainerT" , bound = "MediaContainer" )
1818
1919USER_DONT_RELOAD_FOR_KEYS = set ()
20- _DONT_RELOAD_FOR_KEYS = {'key' }
20+ _DONT_RELOAD_FOR_KEYS = {'key' , 'sourceURI' }
2121OPERATORS = {
2222 'exact' : lambda v , q : v == q ,
2323 'iexact' : lambda v , q : v .lower () == q .lower (),
Original file line number Diff line number Diff line change @@ -283,10 +283,10 @@ def resource(self, name):
283283 """ Returns the :class:`~plexapi.myplex.MyPlexResource` that matches the name specified.
284284
285285 Parameters:
286- name (str): Name to match against.
286+ name (str): Name or machine identifier to match against.
287287 """
288288 for resource in self .resources ():
289- if resource .name .lower () == name .lower ():
289+ if resource .name .lower () == name .lower () or resource . clientIdentifier == name :
290290 return resource
291291 raise NotFound (f'Unable to find resource { name } ' )
292292
Original file line number Diff line number Diff line change @@ -190,6 +190,20 @@ def items(self):
190190 if self ._items is None :
191191 key = f'{ self .key } /items'
192192 items = self .fetchItems (key )
193+
194+ # Cache server connections to avoid reconnecting for each item
195+ _servers = {}
196+ for item in items :
197+ if item .sourceURI :
198+ serverID = item .sourceURI .split ('/' )[2 ]
199+ if serverID not in _servers :
200+ try :
201+ _servers [serverID ] = self ._server .myPlexAccount ().resource (serverID ).connect ()
202+ except NotFound :
203+ # Override the server connection with None if the server is not found
204+ _servers [serverID ] = None
205+ item ._server = _servers [serverID ]
206+
193207 self ._items = items
194208 return self ._items
195209
You can’t perform that action at this time.
0 commit comments