@@ -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