Add progress_callback to download_profile_photo

This commit is contained in:
Lonami Exo 2022-01-16 12:42:00 +01:00
parent dc0f978b59
commit 1e779a91b7
2 changed files with 10 additions and 4 deletions

View File

@ -180,7 +180,8 @@ async def download_profile_photo(
entity: 'hints.EntityLike',
file: 'hints.FileLike' = None,
*,
thumb) -> typing.Optional[str]:
thumb,
progress_callback) -> typing.Optional[str]:
# hex(crc32(x.encode('ascii'))) for x in
# ('User', 'Chat', 'UserFull', 'ChatFull')
ENTITIES = (0x2da17977, 0xc5af5d94, 0x1f4661b9, 0xd49a2697)
@ -201,7 +202,7 @@ async def download_profile_photo(
return await _download_photo(
self, entity.chat_photo, file, date=None,
thumb=thumb, progress_callback=None
thumb=thumb, progress_callback=progress_callback
)
for attr in ('username', 'first_name', 'title'):
@ -247,7 +248,7 @@ async def download_profile_photo(
full = await self(_tl.fn.channels.GetFullChannel(ie))
return await _download_photo(
self, full.full_chat.chat_photo, file,
date=None, progress_callback=None,
date=None, progress_callback=progress_callback,
thumb=thumb
)
else:

View File

@ -1628,7 +1628,8 @@ class TelegramClient:
entity: 'hints.EntityLike',
file: 'hints.FileLike' = None,
*,
thumb: typing.Union[str, enums.Size] = ()) -> typing.Optional[str]:
thumb: typing.Union[str, enums.Size] = (),
progress_callback: 'hints.ProgressCallback' = None) -> typing.Optional[str]:
"""
Downloads the profile photo from the given user, chat or channel.
@ -1662,6 +1663,10 @@ class TelegramClient:
By default, the largest size (original) is downloaded.
progress_callback (`callable`, optional):
A callback function accepting two parameters:
``(received bytes, total)``.
Returns
`None` if no photo was provided, or if it was Empty. On success
the file path is returned since it may differ from the one given.