File tree 3 files changed +17
-3
lines changed
3 files changed +17
-3
lines changed Original file line number Diff line number Diff line change 17
17
MediaContainerT = TypeVar ("MediaContainerT" , bound = "MediaContainer" )
18
18
19
19
USER_DONT_RELOAD_FOR_KEYS = set ()
20
- _DONT_RELOAD_FOR_KEYS = {'key' }
20
+ _DONT_RELOAD_FOR_KEYS = {'key' , 'sourceURI' }
21
21
OPERATORS = {
22
22
'exact' : lambda v , q : v == q ,
23
23
'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):
283
283
""" Returns the :class:`~plexapi.myplex.MyPlexResource` that matches the name specified.
284
284
285
285
Parameters:
286
- name (str): Name to match against.
286
+ name (str): Name or machine identifier to match against.
287
287
"""
288
288
for resource in self .resources ():
289
- if resource .name .lower () == name .lower ():
289
+ if resource .name .lower () == name .lower () or resource . clientIdentifier == name :
290
290
return resource
291
291
raise NotFound (f'Unable to find resource { name } ' )
292
292
Original file line number Diff line number Diff line change @@ -190,6 +190,20 @@ def items(self):
190
190
if self ._items is None :
191
191
key = f'{ self .key } /items'
192
192
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
+
193
207
self ._items = items
194
208
return self ._items
195
209
You can’t perform that action at this time.
0 commit comments