ytmp4 / pytubefix /sabr /video_streaming /stream_protection_status.py
chipling's picture
Upload 106 files
44bafb2 verified
# All credits to https://github.com/LuanRT/googlevideo
from pytubefix.sabr.proto import BinaryReader, BinaryWriter
class StreamProtectionStatus:
def __init__(self):
self.status = None
self.field2 = None
@staticmethod
def encode(message: dict, writer=None):
if writer is None:
writer = BinaryWriter()
if message.get("status", 0) != 0:
writer.uint32(8)
writer.int32(message["status"])
if message.get("field2") != 0:
writer.uint32(16)
writer.int32(message["field2"])
return writer
@staticmethod
def decode(input_data, length=None):
reader = input_data if isinstance(input_data, BinaryReader) else BinaryReader(input_data)
end = reader.len if length is None else reader.pos + length
message = StreamProtectionStatus()
while reader.pos < end:
tag = reader.uint32()
field_no = tag >> 3
if field_no == 1 and tag == 8:
message.status = reader.int32()
continue
elif field_no == 2 and tag == 16:
message.field2 = reader.int32()
continue
if (tag & 7) == 4 or tag == 0:
break
reader.skip(tag & 7)
return message