From ffd8f4988b59f5f1d1bce84bbf29eb5a70996443 Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 5 Jun 2020 23:38:11 -0400 Subject: [PATCH 1/7] adding addActor and removeActor methods to video.Movie --- plexapi/video.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/plexapi/video.py b/plexapi/video.py index 5396d87fa..6841beed7 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -358,6 +358,27 @@ def download(self, savepath=None, keep_original_name=False, **kwargs): filepaths.append(filepath) return filepaths + def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): + edits = {} + actor = 'actor[%s]' % index + if name: + edits['%s.tag.tag' % actor] = name + if role: + edits['%s.tagging.text' % actor] = role + if thumb: + edits['%s.tag.thumb' % actor] = thumb + if locked: + edits['%s.locked' % actor] = int(locked) + self.edit(**edits) + + def removeActor(self, name): + actors = [actor.tag for actor in self.actors] + if name in actors: + edits = {'actor[].tag.tag-': name} + self.edit(**edits) + else: + raise NotFound('%s not found in items list of actors %s' % (name, actors)) + @utils.registerPlexObject class Show(Video): From 35f7d996c7789f8dc8bcec2e57c29f6f29ba68ba Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 5 Jun 2020 23:38:22 -0400 Subject: [PATCH 2/7] adding addActor and removeActor methods to video.Show --- plexapi/video.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plexapi/video.py b/plexapi/video.py index 6841beed7..3130116e7 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -549,6 +549,26 @@ def download(self, savepath=None, keep_original_name=False, **kwargs): filepaths += episode.download(savepath, keep_original_name, **kwargs) return filepaths + def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): + edits = {} + actor = 'actor[%s]' % index + if name: + actor['%s.tag.tag' % actor] = name + if role: + actor['%s.tagging.text' % actor] = role + if thumb: + actor['%s.tag.thumb' % actor] = thumb + if locked: + actor['%s.locked' % actor] = int(locked) + self.edit(**edits) + + def removeActor(self, name): + actors = [actor.tag for actor in self.actors] + if name in actors: + edits = {'actor[].tag.tag-': name} + self.edit(**edits) + else: + raise NotFound('%s not found in items list of actors %s' % (name, actors)) @utils.registerPlexObject class Season(Video): From d1c25e0573768b5a39ab69e4501804cc711468d9 Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 5 Jun 2020 23:39:05 -0400 Subject: [PATCH 3/7] update media.Role class attributes --- plexapi/media.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plexapi/media.py b/plexapi/media.py index 65895c3e3..cd19b9d26 100644 --- a/plexapi/media.py +++ b/plexapi/media.py @@ -650,6 +650,14 @@ class Role(MediaTag): TAG = 'Role' FILTER = 'role' + def _loadData(self, data): + self._data = data + self.id = data.attrib.get('id') + self.filter = data.attrib.get('filter') + self.role = data.attrib.get('role') + self.tag = data.attrib.get('tag') + self.thumb = data.attrib.get('thumb') + @utils.registerPlexObject class Similar(MediaTag): From 3b680164150d9e9e05abc6476267b9801081b27a Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 5 Jun 2020 23:45:49 -0400 Subject: [PATCH 4/7] var correction in video.Show.addActor() --- plexapi/video.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plexapi/video.py b/plexapi/video.py index 3130116e7..d3c124f77 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -553,13 +553,13 @@ def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): edits = {} actor = 'actor[%s]' % index if name: - actor['%s.tag.tag' % actor] = name + edits['%s.tag.tag' % actor] = name if role: - actor['%s.tagging.text' % actor] = role + edits['%s.tagging.text' % actor] = role if thumb: - actor['%s.tag.thumb' % actor] = thumb + edits['%s.tag.thumb' % actor] = thumb if locked: - actor['%s.locked' % actor] = int(locked) + edits['%s.locked' % actor] = int(locked) self.edit(**edits) def removeActor(self, name): From 4358bca7ac66ab76922578f165e132ce7558c002 Mon Sep 17 00:00:00 2001 From: blacktwin Date: Fri, 5 Jun 2020 23:46:33 -0400 Subject: [PATCH 5/7] docstrings for addActor and removeActor in video.Movie and video.Show --- plexapi/video.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/plexapi/video.py b/plexapi/video.py index d3c124f77..fd2bebe29 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -359,6 +359,15 @@ def download(self, savepath=None, keep_original_name=False, **kwargs): return filepaths def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): + """ Add an Actor. + + Parameters: + index (int): Positional index + name (str): Name of Actor. + role (str): Role actor plays in video. + thumb (str): URL to image file. + locked (bool): True = 1, False = 0 + """ edits = {} actor = 'actor[%s]' % index if name: @@ -372,6 +381,7 @@ def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): self.edit(**edits) def removeActor(self, name): + """ Add an Actor from item. """ actors = [actor.tag for actor in self.actors] if name in actors: edits = {'actor[].tag.tag-': name} @@ -550,6 +560,15 @@ def download(self, savepath=None, keep_original_name=False, **kwargs): return filepaths def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): + """ Add an Actor. + + Parameters: + index (int): Positional index + name (str): Name of Actor. + role (str): Role actor plays in video. + thumb (str): URL to image file. + locked (bool): True = 1, False = 0 + """ edits = {} actor = 'actor[%s]' % index if name: @@ -563,6 +582,7 @@ def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): self.edit(**edits) def removeActor(self, name): + """ Add an Actor from item. """ actors = [actor.tag for actor in self.actors] if name in actors: edits = {'actor[].tag.tag-': name} From 1a0dd69e889968b9890516db8c6946cc976b82f2 Mon Sep 17 00:00:00 2001 From: blacktwin Date: Sat, 6 Jun 2020 13:37:27 -0400 Subject: [PATCH 6/7] correct removeActor docstrings --- plexapi/video.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plexapi/video.py b/plexapi/video.py index fd2bebe29..94108d47e 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -381,7 +381,7 @@ def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): self.edit(**edits) def removeActor(self, name): - """ Add an Actor from item. """ + """ Remove an Actor from item. """ actors = [actor.tag for actor in self.actors] if name in actors: edits = {'actor[].tag.tag-': name} @@ -582,7 +582,7 @@ def addActor(self, index=0, name=None, role=None, thumb=None, locked=True): self.edit(**edits) def removeActor(self, name): - """ Add an Actor from item. """ + """ Remove an Actor from item. """ actors = [actor.tag for actor in self.actors] if name in actors: edits = {'actor[].tag.tag-': name} From be6160f172399df37cd2c9241e3ba959cc8ddb6c Mon Sep 17 00:00:00 2001 From: blacktwin Date: Sat, 6 Jun 2020 14:04:04 -0400 Subject: [PATCH 7/7] flake fix --- plexapi/video.py | 1 + 1 file changed, 1 insertion(+) diff --git a/plexapi/video.py b/plexapi/video.py index 94108d47e..32b7ea31a 100644 --- a/plexapi/video.py +++ b/plexapi/video.py @@ -590,6 +590,7 @@ def removeActor(self, name): else: raise NotFound('%s not found in items list of actors %s' % (name, actors)) + @utils.registerPlexObject class Season(Video): """ Represents a single Show Season (including all episodes).