# coding: utf-8
from enum import Enum
from six import string_types, iteritems
from bitmovin_api_sdk.common.poscheck import poscheck_model
from bitmovin_api_sdk.models.hls_manifest_ad_marker_settings import HlsManifestAdMarkerSettings
from bitmovin_api_sdk.models.program_date_time_settings import ProgramDateTimeSettings
import pprint
import six
[docs]
class LiveHlsManifest(object):
@poscheck_model
def __init__(self,
manifest_id=None,
timeshift=None,
live_edge_offset=None,
insert_program_date_time=None,
program_date_time_settings=None,
ad_marker_settings=None):
# type: (string_types, float, float, bool, ProgramDateTimeSettings, HlsManifestAdMarkerSettings) -> None
self._manifest_id = None
self._timeshift = None
self._live_edge_offset = None
self._insert_program_date_time = None
self._program_date_time_settings = None
self._ad_marker_settings = None
self.discriminator = None
if manifest_id is not None:
self.manifest_id = manifest_id
if timeshift is not None:
self.timeshift = timeshift
if live_edge_offset is not None:
self.live_edge_offset = live_edge_offset
if insert_program_date_time is not None:
self.insert_program_date_time = insert_program_date_time
if program_date_time_settings is not None:
self.program_date_time_settings = program_date_time_settings
if ad_marker_settings is not None:
self.ad_marker_settings = ad_marker_settings
@property
def openapi_types(self):
types = {
'manifest_id': 'string_types',
'timeshift': 'float',
'live_edge_offset': 'float',
'insert_program_date_time': 'bool',
'program_date_time_settings': 'ProgramDateTimeSettings',
'ad_marker_settings': 'HlsManifestAdMarkerSettings'
}
return types
@property
def attribute_map(self):
attributes = {
'manifest_id': 'manifestId',
'timeshift': 'timeshift',
'live_edge_offset': 'liveEdgeOffset',
'insert_program_date_time': 'insertProgramDateTime',
'program_date_time_settings': 'programDateTimeSettings',
'ad_marker_settings': 'adMarkerSettings'
}
return attributes
@property
def manifest_id(self):
# type: () -> string_types
"""Gets the manifest_id of this LiveHlsManifest.
HLS manifest id (required)
:return: The manifest_id of this LiveHlsManifest.
:rtype: string_types
"""
return self._manifest_id
@manifest_id.setter
def manifest_id(self, manifest_id):
# type: (string_types) -> None
"""Sets the manifest_id of this LiveHlsManifest.
HLS manifest id (required)
:param manifest_id: The manifest_id of this LiveHlsManifest.
:type: string_types
"""
if manifest_id is not None:
if not isinstance(manifest_id, string_types):
raise TypeError("Invalid type for `manifest_id`, type has to be `string_types`")
self._manifest_id = manifest_id
@property
def timeshift(self):
# type: () -> float
"""Gets the timeshift of this LiveHlsManifest.
Timeshift in seconds. We recommend to use a timeshift value not greater than 3 hours (10800.0 seconds). Longer values could negatively impact the manifest update frequency.
:return: The timeshift of this LiveHlsManifest.
:rtype: float
"""
return self._timeshift
@timeshift.setter
def timeshift(self, timeshift):
# type: (float) -> None
"""Sets the timeshift of this LiveHlsManifest.
Timeshift in seconds. We recommend to use a timeshift value not greater than 3 hours (10800.0 seconds). Longer values could negatively impact the manifest update frequency.
:param timeshift: The timeshift of this LiveHlsManifest.
:type: float
"""
if timeshift is not None:
if not isinstance(timeshift, (float, int)):
raise TypeError("Invalid type for `timeshift`, type has to be `float`")
self._timeshift = timeshift
@property
def live_edge_offset(self):
# type: () -> float
"""Gets the live_edge_offset of this LiveHlsManifest.
Live edge offset in seconds. New segments are held back for this duration (rounded up to whole segments) before they are added to the HLS playlist, and are always added in order. This adds the same amount of latency, but a segment that arrives late by up to this duration does not interrupt the playlist. A segment that arrives later than that stops the playlist from updating until it arrives. If it does not arrive at all, a placeholder segment is added in its place once a few newer segments are available. If set to 0, segments are added as soon as they are available. A late segment is then skipped and inserted into the playlist later, which can make players skip or repeat content. We recommend a value of at least 2 segment durations.
:return: The live_edge_offset of this LiveHlsManifest.
:rtype: float
"""
return self._live_edge_offset
@live_edge_offset.setter
def live_edge_offset(self, live_edge_offset):
# type: (float) -> None
"""Sets the live_edge_offset of this LiveHlsManifest.
Live edge offset in seconds. New segments are held back for this duration (rounded up to whole segments) before they are added to the HLS playlist, and are always added in order. This adds the same amount of latency, but a segment that arrives late by up to this duration does not interrupt the playlist. A segment that arrives later than that stops the playlist from updating until it arrives. If it does not arrive at all, a placeholder segment is added in its place once a few newer segments are available. If set to 0, segments are added as soon as they are available. A late segment is then skipped and inserted into the playlist later, which can make players skip or repeat content. We recommend a value of at least 2 segment durations.
:param live_edge_offset: The live_edge_offset of this LiveHlsManifest.
:type: float
"""
if live_edge_offset is not None:
if not isinstance(live_edge_offset, (float, int)):
raise TypeError("Invalid type for `live_edge_offset`, type has to be `float`")
self._live_edge_offset = live_edge_offset
@property
def insert_program_date_time(self):
# type: () -> bool
"""Gets the insert_program_date_time of this LiveHlsManifest.
Specifies if the EXT-X-PROGRAM-DATETIME tag will be included
:return: The insert_program_date_time of this LiveHlsManifest.
:rtype: bool
"""
return self._insert_program_date_time
@insert_program_date_time.setter
def insert_program_date_time(self, insert_program_date_time):
# type: (bool) -> None
"""Sets the insert_program_date_time of this LiveHlsManifest.
Specifies if the EXT-X-PROGRAM-DATETIME tag will be included
:param insert_program_date_time: The insert_program_date_time of this LiveHlsManifest.
:type: bool
"""
if insert_program_date_time is not None:
if not isinstance(insert_program_date_time, bool):
raise TypeError("Invalid type for `insert_program_date_time`, type has to be `bool`")
self._insert_program_date_time = insert_program_date_time
@property
def program_date_time_settings(self):
# type: () -> ProgramDateTimeSettings
"""Gets the program_date_time_settings of this LiveHlsManifest.
Configuration for the EXT-X-PROGRAM-DATETIME tag
:return: The program_date_time_settings of this LiveHlsManifest.
:rtype: ProgramDateTimeSettings
"""
return self._program_date_time_settings
@program_date_time_settings.setter
def program_date_time_settings(self, program_date_time_settings):
# type: (ProgramDateTimeSettings) -> None
"""Sets the program_date_time_settings of this LiveHlsManifest.
Configuration for the EXT-X-PROGRAM-DATETIME tag
:param program_date_time_settings: The program_date_time_settings of this LiveHlsManifest.
:type: ProgramDateTimeSettings
"""
if program_date_time_settings is not None:
if not isinstance(program_date_time_settings, ProgramDateTimeSettings):
raise TypeError("Invalid type for `program_date_time_settings`, type has to be `ProgramDateTimeSettings`")
self._program_date_time_settings = program_date_time_settings
@property
def ad_marker_settings(self):
# type: () -> HlsManifestAdMarkerSettings
"""Gets the ad_marker_settings of this LiveHlsManifest.
Configuration for tags related to ad markers (e.g. Scte35)
:return: The ad_marker_settings of this LiveHlsManifest.
:rtype: HlsManifestAdMarkerSettings
"""
return self._ad_marker_settings
@ad_marker_settings.setter
def ad_marker_settings(self, ad_marker_settings):
# type: (HlsManifestAdMarkerSettings) -> None
"""Sets the ad_marker_settings of this LiveHlsManifest.
Configuration for tags related to ad markers (e.g. Scte35)
:param ad_marker_settings: The ad_marker_settings of this LiveHlsManifest.
:type: HlsManifestAdMarkerSettings
"""
if ad_marker_settings is not None:
if not isinstance(ad_marker_settings, HlsManifestAdMarkerSettings):
raise TypeError("Invalid type for `ad_marker_settings`, type has to be `HlsManifestAdMarkerSettings`")
self._ad_marker_settings = ad_marker_settings
[docs]
def to_dict(self):
"""Returns the model properties as a dict"""
result = {}
for attr, _ in six.iteritems(self.openapi_types):
value = getattr(self, attr)
if value is None:
continue
if isinstance(value, list):
if len(value) == 0:
continue
result[self.attribute_map.get(attr)] = [y.value if isinstance(y, Enum) else y for y in [x.to_dict() if hasattr(x, "to_dict") else x for x in value]]
elif hasattr(value, "to_dict"):
result[self.attribute_map.get(attr)] = value.to_dict()
elif isinstance(value, Enum):
result[self.attribute_map.get(attr)] = value.value
elif isinstance(value, dict):
result[self.attribute_map.get(attr)] = {k: (v.to_dict() if hasattr(v, "to_dict") else v) for (k, v) in value.items()}
else:
result[self.attribute_map.get(attr)] = value
return result
[docs]
def to_str(self):
"""Returns the string representation of the model"""
return pprint.pformat(self.to_dict())
def __repr__(self):
"""For `print` and `pprint`"""
return self.to_str()
def __eq__(self, other):
"""Returns true if both objects are equal"""
if not isinstance(other, LiveHlsManifest):
return False
return self.__dict__ == other.__dict__
def __ne__(self, other):
"""Returns true if both objects are not equal"""
return not self == other