50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
|
import plexstream
|
||
|
import util
|
||
|
|
||
|
|
||
|
class MediaChoice(object):
|
||
|
SUBTITLES_DEFAULT = 0
|
||
|
SUBTITLES_BURN = 1
|
||
|
SUBTITLES_SOFT_DP = 2
|
||
|
SUBTITLES_SOFT_ANY = 3
|
||
|
|
||
|
def __init__(self, media=None, partIndex=0):
|
||
|
self.media = media
|
||
|
self.part = None
|
||
|
self.forceTranscode = False
|
||
|
self.isDirectPlayable = False
|
||
|
self.videoStream = None
|
||
|
self.audioStream = None
|
||
|
self.subtitleStream = None
|
||
|
self.isSelected = False
|
||
|
self.subtitleDecision = self.SUBTITLES_DEFAULT
|
||
|
|
||
|
self.sorts = util.AttributeDict()
|
||
|
|
||
|
if media:
|
||
|
self.indirectHeaders = media.indirectHeaders
|
||
|
self.part = media.parts[partIndex]
|
||
|
if self.part:
|
||
|
# We generally just rely on PMS to have told us selected streams, so
|
||
|
# initialize our streams accordingly.
|
||
|
|
||
|
self.videoStream = self.part.getSelectedStreamOfType(plexstream.PlexStream.TYPE_VIDEO)
|
||
|
self.audioStream = self.part.getSelectedStreamOfType(plexstream.PlexStream.TYPE_AUDIO)
|
||
|
self.subtitleStream = self.part.getSelectedStreamOfType(plexstream.PlexStream.TYPE_SUBTITLE)
|
||
|
else:
|
||
|
util.WARN_LOG("Media does not contain a valid part")
|
||
|
|
||
|
util.LOG("Choice media: {0} part:{1}".format(media, partIndex))
|
||
|
for streamType in ("videoStream", "audioStream", "subtitleStream"):
|
||
|
attr = getattr(self, streamType)
|
||
|
if attr:
|
||
|
util.LOG("Choice {0}: {1}".format(streamType, repr(attr)))
|
||
|
else:
|
||
|
util.WARN_LOG("Could not create media choice for invalid media")
|
||
|
|
||
|
def __str__(self):
|
||
|
return "direct playable={0} version={1}".format(self.isDirectPlayable, self.media)
|
||
|
|
||
|
def __repr__(self):
|
||
|
return self.__str__()
|