Skip to content

Commit e654864

Browse files
authored
Merge pull request #386 from pkkid/video_exists
add exists function
2 parents 9c50225 + 6111e5e commit e654864

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

plexapi/media.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ class MediaPart(PlexObject):
8585
key (str): Key used to access this media part (ex: /library/parts/46618/1389985872/file.avi).
8686
size (int): Size of this file in bytes (ex: 733884416).
8787
streams (list<:class:`~plexapi.media.MediaPartStream`>): List of streams in this media part.
88+
exists (bool): Determine if file exists
89+
accessible (bool): Determine if file is accessible
8890
"""
8991
TAG = 'Part'
9092

@@ -104,6 +106,8 @@ def _loadData(self, data):
104106
self.syncState = data.attrib.get('syncState')
105107
self.videoProfile = data.attrib.get('videoProfile')
106108
self.streams = self._buildStreams(data)
109+
self.exists = cast(bool, data.attrib.get('exists'))
110+
self.accessible = cast(bool, data.attrib.get('accessible'))
107111

108112
def _buildStreams(self, data):
109113
streams = []

tests/test_video.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,8 @@ def test_video_Movie_attrs(movies):
215215
assert len(part.key) >= 10
216216
assert part._server._baseurl == utils.SERVER_BASEURL
217217
assert utils.is_int(part.size, gte=1000000)
218+
assert part.exists
219+
assert part.accessible
218220
# Stream 1
219221
stream1 = part.streams[0]
220222
assert stream1.bitDepth in (8, None)
@@ -506,6 +508,8 @@ def test_video_Episode_attrs(episode):
506508
assert len(part.key) >= 10
507509
assert part._server._baseurl == utils.SERVER_BASEURL
508510
assert utils.is_int(part.size, gte=18184197)
511+
assert part.exists
512+
assert part.accessible
509513

510514

511515
def test_video_Season(show):
@@ -614,3 +618,17 @@ def test_that_reload_return_the_same_object(plex):
614618
episode_section_get_key = episode_section_get.key
615619
assert episode_library_search_key == episode_library_search.reload().key == episode_search_key == episode_search.reload().key == episode_section_get_key == episode_section_get.reload().key # noqa
616620

621+
622+
def test_video_exists_accessible(movie, episode):
623+
assert movie.media[0].parts[0].exists is None
624+
assert movie.media[0].parts[0].accessible is None
625+
movie.reload()
626+
assert movie.media[0].parts[0].exists is True
627+
assert movie.media[0].parts[0].accessible is True
628+
629+
assert episode.media[0].parts[0].exists is None
630+
assert episode.media[0].parts[0].accessible is None
631+
episode.reload()
632+
assert episode.media[0].parts[0].exists is True
633+
assert episode.media[0].parts[0].accessible is True
634+

0 commit comments

Comments
 (0)