You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

252 lines
6.5 KiB
Python

# DO NOT EDIT THIS FILE!
#
# This file is generated from the CDP specification. If you need to make
# changes, edit the generator and regenerate all of the modules.
#
# CDP domain: Media (experimental)
from __future__ import annotations
from .util import event_class, T_JSON_DICT
from dataclasses import dataclass
import enum
import typing
class PlayerId(str):
'''
Players will get an ID that is unique within the agent context.
'''
def to_json(self) -> str:
return self
@classmethod
def from_json(cls, json: str) -> PlayerId:
return cls(json)
def __repr__(self):
return 'PlayerId({})'.format(super().__repr__())
class Timestamp(float):
def to_json(self) -> float:
return self
@classmethod
def from_json(cls, json: float) -> Timestamp:
return cls(json)
def __repr__(self):
return 'Timestamp({})'.format(super().__repr__())
@dataclass
class PlayerMessage:
'''
Have one type per entry in MediaLogRecord::Type
Corresponds to kMessage
'''
#: Keep in sync with MediaLogMessageLevel
#: We are currently keeping the message level 'error' separate from the
#: PlayerError type because right now they represent different things,
#: this one being a DVLOG(ERROR) style log message that gets printed
#: based on what log level is selected in the UI, and the other is a
#: representation of a media::PipelineStatus object. Soon however we're
#: going to be moving away from using PipelineStatus for errors and
#: introducing a new error type which should hopefully let us integrate
#: the error log level into the PlayerError type.
level: str
message: str
def to_json(self):
json = dict()
json['level'] = self.level
json['message'] = self.message
return json
@classmethod
def from_json(cls, json):
return cls(
level=str(json['level']),
message=str(json['message']),
)
@dataclass
class PlayerProperty:
'''
Corresponds to kMediaPropertyChange
'''
name: str
value: str
def to_json(self):
json = dict()
json['name'] = self.name
json['value'] = self.value
return json
@classmethod
def from_json(cls, json):
return cls(
name=str(json['name']),
value=str(json['value']),
)
@dataclass
class PlayerEvent:
'''
Corresponds to kMediaEventTriggered
'''
timestamp: Timestamp
value: str
def to_json(self):
json = dict()
json['timestamp'] = self.timestamp.to_json()
json['value'] = self.value
return json
@classmethod
def from_json(cls, json):
return cls(
timestamp=Timestamp.from_json(json['timestamp']),
value=str(json['value']),
)
@dataclass
class PlayerError:
'''
Corresponds to kMediaError
'''
type_: str
#: When this switches to using media::Status instead of PipelineStatus
#: we can remove "errorCode" and replace it with the fields from
#: a Status instance. This also seems like a duplicate of the error
#: level enum - there is a todo bug to have that level removed and
#: use this instead. (crbug.com/1068454)
error_code: str
def to_json(self):
json = dict()
json['type'] = self.type_
json['errorCode'] = self.error_code
return json
@classmethod
def from_json(cls, json):
return cls(
type_=str(json['type']),
error_code=str(json['errorCode']),
)
def enable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Enables the Media domain
'''
cmd_dict: T_JSON_DICT = {
'method': 'Media.enable',
}
json = yield cmd_dict
def disable() -> typing.Generator[T_JSON_DICT,T_JSON_DICT,None]:
'''
Disables the Media domain.
'''
cmd_dict: T_JSON_DICT = {
'method': 'Media.disable',
}
json = yield cmd_dict
@event_class('Media.playerPropertiesChanged')
@dataclass
class PlayerPropertiesChanged:
'''
This can be called multiple times, and can be used to set / override /
remove player properties. A null propValue indicates removal.
'''
player_id: PlayerId
properties: typing.List[PlayerProperty]
@classmethod
def from_json(cls, json: T_JSON_DICT) -> PlayerPropertiesChanged:
return cls(
player_id=PlayerId.from_json(json['playerId']),
properties=[PlayerProperty.from_json(i) for i in json['properties']]
)
@event_class('Media.playerEventsAdded')
@dataclass
class PlayerEventsAdded:
'''
Send events as a list, allowing them to be batched on the browser for less
congestion. If batched, events must ALWAYS be in chronological order.
'''
player_id: PlayerId
events: typing.List[PlayerEvent]
@classmethod
def from_json(cls, json: T_JSON_DICT) -> PlayerEventsAdded:
return cls(
player_id=PlayerId.from_json(json['playerId']),
events=[PlayerEvent.from_json(i) for i in json['events']]
)
@event_class('Media.playerMessagesLogged')
@dataclass
class PlayerMessagesLogged:
'''
Send a list of any messages that need to be delivered.
'''
player_id: PlayerId
messages: typing.List[PlayerMessage]
@classmethod
def from_json(cls, json: T_JSON_DICT) -> PlayerMessagesLogged:
return cls(
player_id=PlayerId.from_json(json['playerId']),
messages=[PlayerMessage.from_json(i) for i in json['messages']]
)
@event_class('Media.playerErrorsRaised')
@dataclass
class PlayerErrorsRaised:
'''
Send a list of any errors that need to be delivered.
'''
player_id: PlayerId
errors: typing.List[PlayerError]
@classmethod
def from_json(cls, json: T_JSON_DICT) -> PlayerErrorsRaised:
return cls(
player_id=PlayerId.from_json(json['playerId']),
errors=[PlayerError.from_json(i) for i in json['errors']]
)
@event_class('Media.playersCreated')
@dataclass
class PlayersCreated:
'''
Called whenever a player is created, or when a new agent joins and recieves
a list of active players. If an agent is restored, it will recieve the full
list of player ids and all events again.
'''
players: typing.List[PlayerId]
@classmethod
def from_json(cls, json: T_JSON_DICT) -> PlayersCreated:
return cls(
players=[PlayerId.from_json(i) for i in json['players']]
)