Skip to content
This repository was archived by the owner on Dec 23, 2024. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions pyrogram/parser/html.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,9 @@ async def parse(self, text: str):

entities.append(entity)

# Remove zero-length entities
entities = list(filter(lambda x: x.length > 0, entities))

return {
"message": utils.remove_surrogates(parser.text),
"entities": sorted(entities, key=lambda e: e.offset)
Expand All @@ -156,13 +159,21 @@ def unparse(text: str, entities: list):
start = entity.offset
end = start + entity.length

if entity_type in (MessageEntityType.BOLD, MessageEntityType.ITALIC, MessageEntityType.UNDERLINE,
MessageEntityType.STRIKETHROUGH):
if entity_type in (
MessageEntityType.BOLD,
MessageEntityType.ITALIC,
MessageEntityType.UNDERLINE,
MessageEntityType.STRIKETHROUGH,
):
name = entity_type.name[0].lower()
start_tag = f"<{name}>"
end_tag = f"</{name}>"
elif entity_type in (MessageEntityType.CODE, MessageEntityType.PRE, MessageEntityType.BLOCKQUOTE,
MessageEntityType.SPOILER):
elif entity_type in (
MessageEntityType.CODE,
MessageEntityType.PRE,
MessageEntityType.BLOCKQUOTE,
MessageEntityType.SPOILER,
):
name = entity_type.name.lower()
start_tag = f"<{name}>"
end_tag = f"</{name}>"
Expand Down
23 changes: 17 additions & 6 deletions pyrogram/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,10 @@ def get_input_media_from_file_id(
try:
decoded = FileId.decode(file_id)
except Exception:
raise ValueError(f'Failed to decode "{file_id}". The value does not represent an existing local file, '
f'HTTP URL, or valid file id.')
raise ValueError(
f'Failed to decode "{file_id}". The value does not represent an existing local file, '
f"HTTP URL, or valid file id."
)

file_type = decoded.file_type

Expand Down Expand Up @@ -82,7 +84,11 @@ def get_input_media_from_file_id(
raise ValueError(f"Unknown file id: {file_id}")


async def parse_messages(client, messages: "raw.types.messages.Messages", replies: int = 1) -> List["types.Message"]:
async def parse_messages(
client,
messages: "raw.types.messages.Messages",
replies: int = 1
) -> List["types.Message"]:
users = {i.id: i for i in messages.users}
chats = {i.id: i for i in messages.chats}

Expand Down Expand Up @@ -260,8 +266,10 @@ def xor(a: bytes, b: bytes) -> bytes:
return bytes(i ^ j for i, j in zip(a, b))


def compute_password_hash(algo: raw.types.PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow,
password: str) -> bytes:
def compute_password_hash(
algo: raw.types.PasswordKdfAlgoSHA256SHA256PBKDF2HMACSHA512iter100000SHA256ModPow,
password: str
) -> bytes:
hash1 = sha256(algo.salt1 + password.encode() + algo.salt1)
hash2 = sha256(algo.salt2 + hash1 + algo.salt2)
hash3 = hashlib.pbkdf2_hmac("sha512", hash2, algo.salt1, 100000)
Expand All @@ -270,7 +278,10 @@ def compute_password_hash(algo: raw.types.PasswordKdfAlgoSHA256SHA256PBKDF2HMACS


# noinspection PyPep8Naming
def compute_password_check(r: raw.types.account.Password, password: str) -> raw.types.InputCheckPasswordSRP:
def compute_password_check(
r: raw.types.account.Password,
password: str
) -> raw.types.InputCheckPasswordSRP:
algo = r.current_algo

p_bytes = algo.p
Expand Down