From 6cc6e6482f55cd350e77da192ef3d3cfec5860f0 Mon Sep 17 00:00:00 2001 From: Jason Lawrence Date: Sun, 25 Oct 2020 14:49:30 -0500 Subject: [PATCH 1/2] Make Photo objects Playable --- plexapi/photo.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plexapi/photo.py b/plexapi/photo.py index a8fc1c703..41b4ce060 100644 --- a/plexapi/photo.py +++ b/plexapi/photo.py @@ -2,7 +2,7 @@ from urllib.parse import quote_plus from plexapi import media, utils -from plexapi.base import PlexPartialObject +from plexapi.base import Playable, PlexPartialObject from plexapi.exceptions import BadRequest, NotFound @@ -76,7 +76,7 @@ def photo(self, title): @utils.registerPlexObject -class Photo(PlexPartialObject): +class Photo(PlexPartialObject, Playable): """ Represents a single photo. Attributes: @@ -105,6 +105,7 @@ class Photo(PlexPartialObject): def _loadData(self, data): """ Load attribute values from Plex XML response. """ + Playable._loadData(self, data) self.listType = 'photo' self.addedAt = utils.toDatetime(data.attrib.get('addedAt')) self.fields = self.findItems(data, etag='Field') From 75b9b536d0ae7f13aa6da7dc009f3f10b2d7a3c9 Mon Sep 17 00:00:00 2001 From: Jason Lawrence Date: Sun, 25 Oct 2020 22:46:08 -0500 Subject: [PATCH 2/2] Add more attributes --- plexapi/photo.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/plexapi/photo.py b/plexapi/photo.py index 41b4ce060..54041e7ee 100644 --- a/plexapi/photo.py +++ b/plexapi/photo.py @@ -86,6 +86,7 @@ class Photo(PlexPartialObject, Playable): fields (list): List of :class:`~plexapi.media.Field`. index (sting): Index number of this photo. key (str): API URL (/library/metadata/). + librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID. listType (str): Hardcoded as 'photo' (useful for search filters). media (TYPE): Unknown originallyAvailableAt (datetime): Datetime this photo was added to Plex. @@ -111,6 +112,7 @@ def _loadData(self, data): self.fields = self.findItems(data, etag='Field') self.index = utils.cast(int, data.attrib.get('index')) self.key = data.attrib.get('key') + self.librarySectionID = data.attrib.get('librarySectionID') self.originallyAvailableAt = utils.toDatetime( data.attrib.get('originallyAvailableAt'), '%Y-%m-%d') self.parentKey = data.attrib.get('parentKey') @@ -125,6 +127,12 @@ def _loadData(self, data): self.media = self.findItems(data, media.Media) self.tag = self.findItems(data, media.Tag) + @property + def thumbUrl(self): + """Return URL for the thumbnail image.""" + key = self.firstAttr('thumb', 'parentThumb', 'granparentThumb') + return self._server.url(key, includeToken=True) if key else None + def photoalbum(self): """ Return this photo's :class:`~plexapi.photo.Photoalbum`. """ return self.fetchItem(self.parentKey)