Skip to content

Commit 642ba8b

Browse files
authored
Allow exclude parameters in reload kwargs (#1378)
* Allow exclude parameters in reload * Add test for reload kwargs
1 parent b494e8e commit 642ba8b

File tree

2 files changed

+29
-6
lines changed

2 files changed

+29
-6
lines changed

plexapi/base.py

+21-6
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,22 @@ def _buildDetailsKey(self, **kwargs):
116116
or disable each parameter individually by setting it to False or 0.
117117
"""
118118
details_key = self.key
119+
params = {}
120+
119121
if details_key and hasattr(self, '_INCLUDES'):
120-
includes = {}
121122
for k, v in self._INCLUDES.items():
122-
value = kwargs.get(k, v)
123+
value = kwargs.pop(k, v)
123124
if value not in [False, 0, '0']:
124-
includes[k] = 1 if value is True else value
125-
if includes:
126-
details_key += '?' + urlencode(sorted(includes.items()))
125+
params[k] = 1 if value is True else value
126+
127+
if details_key and hasattr(self, '_EXCLUDES'):
128+
for k, v in self._EXCLUDES.items():
129+
value = kwargs.pop(k, None)
130+
if value is not None:
131+
params[k] = 1 if value is True else value
132+
133+
if params:
134+
details_key += '?' + urlencode(sorted(params.items()))
127135
return details_key
128136

129137
def _isChildOf(self, **kwargs):
@@ -498,7 +506,14 @@ class PlexPartialObject(PlexObject):
498506
'includeRelated': 1,
499507
'includeRelatedCount': 1,
500508
'includeReviews': 1,
501-
'includeStations': 1
509+
'includeStations': 1,
510+
}
511+
_EXCLUDES = {
512+
'excludeElements': (
513+
'Media,Genre,Country,Guid,Rating,Collection,Director,Writer,Role,Producer,Similar,Style,Mood,Format'
514+
),
515+
'excludeFields': 'summary,tagline',
516+
'skipRefresh': 1,
502517
}
503518

504519
def __eq__(self, other):

tests/test_video.py

+8
Original file line numberDiff line numberDiff line change
@@ -339,6 +339,14 @@ def test_video_Movie_isFullObject_and_reload(plex):
339339
assert len(movie_via_section_search.roles) >= 3
340340

341341

342+
def test_video_Movie_reload_kwargs(movie):
343+
assert len(movie.media)
344+
assert movie.summary is not None
345+
movie.reload(includeFields=False, **movie._EXCLUDES)
346+
assert movie.__dict__.get('media') == []
347+
assert movie.__dict__.get('summary') is None
348+
349+
342350
def test_video_movie_watched(movie):
343351
movie.markUnplayed()
344352
movie.markPlayed()

0 commit comments

Comments
 (0)