mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2025-08-05 19:42:29 +00:00
Many code-style improvements
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
from datetime import datetime
|
||||
from io import BytesIO, BufferedReader
|
||||
from telethon.tl.all_tlobjects import tlobjects
|
||||
from struct import unpack
|
||||
from telethon.errors import *
|
||||
import inspect
|
||||
import os
|
||||
from datetime import datetime
|
||||
from io import BufferedReader, BytesIO
|
||||
from struct import unpack
|
||||
|
||||
from telethon.errors import *
|
||||
from telethon.tl.all_tlobjects import tlobjects
|
||||
|
||||
|
||||
class BinaryReader:
|
||||
@@ -12,13 +12,15 @@ class BinaryReader:
|
||||
Small utility class to read binary data.
|
||||
Also creates a "Memory Stream" if necessary
|
||||
"""
|
||||
|
||||
def __init__(self, data=None, stream=None):
|
||||
if data:
|
||||
self.stream = BytesIO(data)
|
||||
elif stream:
|
||||
self.stream = stream
|
||||
else:
|
||||
raise InvalidParameterError("Either bytes or a stream must be provided")
|
||||
raise InvalidParameterError(
|
||||
'Either bytes or a stream must be provided')
|
||||
|
||||
self.reader = BufferedReader(self.stream)
|
||||
|
||||
@@ -47,14 +49,16 @@ class BinaryReader:
|
||||
|
||||
def read_large_int(self, bits, signed=True):
|
||||
"""Reads a n-bits long integer value"""
|
||||
return int.from_bytes(self.read(bits // 8), byteorder='little', signed=signed)
|
||||
return int.from_bytes(
|
||||
self.read(bits // 8), byteorder='little', signed=signed)
|
||||
|
||||
def read(self, length):
|
||||
"""Read the given amount of bytes"""
|
||||
result = self.reader.read(length)
|
||||
if len(result) != length:
|
||||
raise BufferError('Trying to read outside the data bounds (no more data left to read)')
|
||||
|
||||
raise BufferError(
|
||||
'Trying to read outside the data bounds (no more data left to read)')
|
||||
|
||||
return result
|
||||
|
||||
def get_bytes(self):
|
||||
@@ -69,7 +73,8 @@ class BinaryReader:
|
||||
"""Reads a Telegram-encoded byte array, without the need of specifying its length"""
|
||||
first_byte = self.read_byte()
|
||||
if first_byte == 254:
|
||||
length = self.read_byte() | (self.read_byte() << 8) | (self.read_byte() << 16)
|
||||
length = self.read_byte() | (self.read_byte() << 8) | (
|
||||
self.read_byte() << 16)
|
||||
padding = length % 4
|
||||
else:
|
||||
length = first_byte
|
||||
|
@@ -1,4 +1,4 @@
|
||||
from io import BytesIO, BufferedWriter
|
||||
from io import BufferedWriter, BytesIO
|
||||
from struct import pack
|
||||
|
||||
|
||||
@@ -26,12 +26,16 @@ class BinaryWriter:
|
||||
|
||||
def write_int(self, value, signed=True):
|
||||
"""Writes an integer value (4 bytes), which can or cannot be signed"""
|
||||
self.writer.write(int.to_bytes(value, length=4, byteorder='little', signed=signed))
|
||||
self.writer.write(
|
||||
int.to_bytes(
|
||||
value, length=4, byteorder='little', signed=signed))
|
||||
self.written_count += 4
|
||||
|
||||
def write_long(self, value, signed=True):
|
||||
"""Writes a long integer value (8 bytes), which can or cannot be signed"""
|
||||
self.writer.write(int.to_bytes(value, length=8, byteorder='little', signed=signed))
|
||||
self.writer.write(
|
||||
int.to_bytes(
|
||||
value, length=8, byteorder='little', signed=signed))
|
||||
self.written_count += 8
|
||||
|
||||
def write_float(self, value):
|
||||
@@ -46,7 +50,9 @@ class BinaryWriter:
|
||||
|
||||
def write_large_int(self, value, bits, signed=True):
|
||||
"""Writes a n-bits long integer value"""
|
||||
self.writer.write(int.to_bytes(value, length=bits // 8, byteorder='little', signed=signed))
|
||||
self.writer.write(
|
||||
int.to_bytes(
|
||||
value, length=bits // 8, byteorder='little', signed=signed))
|
||||
self.written_count += bits // 8
|
||||
|
||||
def write(self, data):
|
||||
|
@@ -4,12 +4,10 @@
|
||||
after all, both are the same attribute, IDs."""
|
||||
from mimetypes import add_type, guess_extension
|
||||
|
||||
from telethon.tl.types import \
|
||||
User, Chat, Channel, \
|
||||
PeerUser, PeerChat, PeerChannel, \
|
||||
InputPeerUser, InputPeerChat, InputPeerChannel, \
|
||||
UserProfilePhoto, ChatPhoto, \
|
||||
MessageMediaPhoto, MessageMediaDocument
|
||||
from telethon.tl.types import (
|
||||
Channel, Chat, ChatPhoto, InputPeerChannel, InputPeerChat, InputPeerUser,
|
||||
MessageMediaDocument, MessageMediaPhoto, PeerChannel, PeerChat, PeerUser,
|
||||
User, UserProfilePhoto)
|
||||
|
||||
|
||||
def get_display_name(entity):
|
||||
@@ -31,8 +29,7 @@ def get_extension(media):
|
||||
"""Gets the corresponding extension for any Telegram media"""
|
||||
|
||||
# Photos are always compressed as .jpg by Telegram
|
||||
if (isinstance(media, UserProfilePhoto) or
|
||||
isinstance(media, ChatPhoto) or
|
||||
if (isinstance(media, UserProfilePhoto) or isinstance(media, ChatPhoto) or
|
||||
isinstance(media, MessageMediaPhoto)):
|
||||
return '.jpg'
|
||||
|
||||
|
Reference in New Issue
Block a user