File size: 1,284 Bytes
44bafb2 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# All credits to https://github.com/LuanRT/googlevideo
from pytubefix.sabr.proto import BinaryWriter, BinaryReader
class SabrError:
def __init__(self):
self.type = ""
self.code = 0
@staticmethod
def encode(message: dict, writer=None):
if writer is None:
writer = BinaryWriter()
if message.get("type") not in (None, ""):
writer.uint32(10).string(message["type"])
if message.get("code") not in (None, 0):
writer.uint32(16).int32(message["code"])
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 = SabrError()
while reader.pos < end:
tag = reader.uint32()
field_number = tag >> 3
if field_number == 1 and tag == 10:
message.type = reader.string()
continue
if field_number == 2 and tag == 16:
message.code = reader.int32()
continue
if (tag & 7) == 4 or tag == 0:
break
reader.skip(tag & 7)
return message
|