Skip to content

Commit 2f4a750

Browse files
authored
Make Photo objects Playable (#592)
* Make Photo objects Playable * Add more attributes
1 parent 380fd78 commit 2f4a750

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

plexapi/photo.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from urllib.parse import quote_plus
33

44
from plexapi import media, utils
5-
from plexapi.base import PlexPartialObject
5+
from plexapi.base import Playable, PlexPartialObject
66
from plexapi.exceptions import BadRequest, NotFound
77

88

@@ -106,7 +106,7 @@ def download(self, savepath=None, keep_original_name=False, showstatus=False):
106106

107107

108108
@utils.registerPlexObject
109-
class Photo(PlexPartialObject):
109+
class Photo(PlexPartialObject, Playable):
110110
""" Represents a single photo.
111111
112112
Attributes:
@@ -116,6 +116,7 @@ class Photo(PlexPartialObject):
116116
fields (list): List of :class:`~plexapi.media.Field`.
117117
index (sting): Index number of this photo.
118118
key (str): API URL (/library/metadata/<ratingkey>).
119+
librarySectionID (int): :class:`~plexapi.library.LibrarySection` ID.
119120
listType (str): Hardcoded as 'photo' (useful for search filters).
120121
media (TYPE): Unknown
121122
originallyAvailableAt (datetime): Datetime this photo was added to Plex.
@@ -135,11 +136,13 @@ class Photo(PlexPartialObject):
135136

136137
def _loadData(self, data):
137138
""" Load attribute values from Plex XML response. """
139+
Playable._loadData(self, data)
138140
self.listType = 'photo'
139141
self.addedAt = utils.toDatetime(data.attrib.get('addedAt'))
140142
self.fields = self.findItems(data, etag='Field')
141143
self.index = utils.cast(int, data.attrib.get('index'))
142144
self.key = data.attrib.get('key')
145+
self.librarySectionID = data.attrib.get('librarySectionID')
143146
self.originallyAvailableAt = utils.toDatetime(
144147
data.attrib.get('originallyAvailableAt'), '%Y-%m-%d')
145148
self.parentKey = data.attrib.get('parentKey')
@@ -154,6 +157,12 @@ def _loadData(self, data):
154157
self.media = self.findItems(data, media.Media)
155158
self.tag = self.findItems(data, media.Tag)
156159

160+
@property
161+
def thumbUrl(self):
162+
"""Return URL for the thumbnail image."""
163+
key = self.firstAttr('thumb', 'parentThumb', 'granparentThumb')
164+
return self._server.url(key, includeToken=True) if key else None
165+
157166
def photoalbum(self):
158167
""" Return this photo's :class:`~plexapi.photo.Photoalbum`. """
159168
return self.fetchItem(self.parentKey)

0 commit comments

Comments
 (0)