Skip to content

Commit 4db275d

Browse files
authored
Corrections from comments
Moved all subtitle functions to parent Video class. Add to removeSubtitles docstring how subtitle files are handled when removed.
1 parent 1b1ad02 commit 4db275d

File tree

1 file changed

+33
-56
lines changed

1 file changed

+33
-56
lines changed

plexapi/video.py

Lines changed: 33 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,39 @@ def _defaultSyncTitle(self):
9090
""" Returns str, default title for a new syncItem. """
9191
return self.title
9292

93+
def subtitleStreams(self):
94+
""" Returns a list of :class:`~plexapi.media.SubtitleStream` objects for all MediaParts. """
95+
streams = []
96+
97+
parts = self.iterParts()
98+
for part in parts:
99+
streams += part.subtitleStreams()
100+
return streams
101+
102+
def uploadSubtitles(self, filepath):
103+
""" Upload Subtitle file for video. """
104+
url = '%s/subtitles' % self.key
105+
filename = os.path.basename(filepath)
106+
subFormat = os.path.splitext(filepath)[1][1:]
107+
with open(filepath, 'rb') as subfile:
108+
params = {'title': filename,
109+
'format': subFormat
110+
}
111+
headers = {'Accept': 'text/plain, */*'}
112+
self._server.query(url, self._server._session.post, data=subfile, params=params, headers=headers)
113+
self.reload()
114+
115+
def removeSubtitles(self, streamID=None, streamTitle=None):
116+
""" Remove Subtitle from movie's subtitles listing.
117+
118+
Note: If subtitle file is located inside video directory it will bbe deleted.
119+
Files outside of video directory are not effected.
120+
"""
121+
for stream in self.subtitleStreams():
122+
if streamID == stream.id or streamTitle == stream.title:
123+
self._server.query(stream.key, self._server._session.delete)
124+
self.reload()
125+
93126
def sync(self, videoQuality, client=None, clientId=None, limit=None, unwatched=False, title=None):
94127
""" Add current video (movie, tv-show, season or episode) as sync item for specified device.
95128
See :func:`plexapi.myplex.MyPlexAccount.sync()` for possible exceptions.
@@ -220,34 +253,6 @@ def locations(self):
220253
"""
221254
return [part.file for part in self.iterParts() if part]
222255

223-
def subtitleStreams(self):
224-
""" Returns a list of :class:`~plexapi.media.SubtitleStream` objects for all MediaParts. """
225-
streams = []
226-
for elem in self.media:
227-
for part in elem.parts:
228-
streams += part.subtitleStreams()
229-
return streams
230-
231-
def uploadSubtitles(self, filepath):
232-
""" Upload Subtitle file for video. """
233-
url = '%s/subtitles' % self.key
234-
filename = os.path.basename(filepath)
235-
subFormat = os.path.splitext(filepath)[1][1:]
236-
with open(filepath, 'rb') as subfile:
237-
params = {'title': filename,
238-
'format': subFormat
239-
}
240-
headers = {'Accept': 'text/plain, */*'}
241-
self._server.query(url, self._server._session.post, data=subfile, params=params, headers=headers)
242-
self.reload()
243-
244-
def removeSubtitles(self, streamID=int, streamTitle=str):
245-
""" Remove Subtitle from movie's subtitles listing. """
246-
for stream in self.subtitleStreams():
247-
if streamID == stream.id or streamTitle == stream.title:
248-
self._server.query(stream.key, self._server._session.delete)
249-
self.reload()
250-
251256
def _prettyfilename(self):
252257
# This is just for compat.
253258
return self.title
@@ -643,31 +648,3 @@ def show(self):
643648
def _defaultSyncTitle(self):
644649
""" Returns str, default title for a new syncItem. """
645650
return '%s - %s - (%s) %s' % (self.grandparentTitle, self.parentTitle, self.seasonEpisode, self.title)
646-
647-
def subtitleStreams(self):
648-
""" Returns a list of :class:`~plexapi.media.SubtitleStream` objects for all MediaParts. """
649-
streams = []
650-
for elem in self.media:
651-
for part in elem.parts:
652-
streams += part.subtitleStreams()
653-
return streams
654-
655-
def uploadSubtitles(self, filepath):
656-
""" Upload Subtitle file for video. """
657-
url = '%s/subtitles' % self.key
658-
filename = os.path.basename(filepath)
659-
subFormat = os.path.splitext(filepath)[1][1:]
660-
with open(filepath, 'rb') as subfile:
661-
params = {'title': filename,
662-
'format': subFormat
663-
}
664-
headers = {'Accept': 'text/plain, */*'}
665-
self._server.query(url, self._server._session.post, data=subfile, params=params, headers=headers)
666-
self.reload()
667-
668-
def removeSubtitles(self, streamID=int, streamTitle=str):
669-
""" Remove Subtitle from movie's subtitles listing. """
670-
for stream in self.subtitleStreams():
671-
if streamID == stream.id or streamTitle == stream.title:
672-
self._server.query(stream.key, self._server._session.delete)
673-
self.reload()

0 commit comments

Comments
 (0)