diff --git a/pyrogram/client/types/messages_and_media/photo_size.py b/pyrogram/client/types/messages_and_media/thumbnail.py similarity index 53% rename from pyrogram/client/types/messages_and_media/photo_size.py rename to pyrogram/client/types/messages_and_media/thumbnail.py index 9f64ae6a..0ff15e66 100644 --- a/pyrogram/client/types/messages_and_media/photo_size.py +++ b/pyrogram/client/types/messages_and_media/thumbnail.py @@ -17,15 +17,16 @@ # along with Pyrogram. If not, see . from struct import pack -from typing import List, Union +from typing import Union, List import pyrogram from pyrogram.api import types from pyrogram.client.ext.utils import encode +from .stripped_thumbnail import StrippedThumbnail from ..pyrogram_type import PyrogramType -class PhotoSize(PyrogramType): +class Thumbnail(PyrogramType): """One size of a photo or a file/sticker thumbnail. Parameters: @@ -61,30 +62,44 @@ class PhotoSize(PyrogramType): self.file_size = file_size @staticmethod - def _parse(client, thumbs: List) -> Union["PhotoSize", None]: - if not thumbs: + def _parse( + client, + media: Union[types.Photo, types.Document] + ) -> Union[List[Union[StrippedThumbnail, "Thumbnail"]], None]: + if isinstance(media, types.Photo): + raw_thumbnails = media.sizes[:-1] + media_type = 0 + elif isinstance(media, types.Document): + raw_thumbnails = media.thumbs + media_type = 14 + + if not raw_thumbnails: + return None + else: return None - photo_size = thumbs[-1] + thumbnails = [] - if not isinstance(photo_size, (types.PhotoSize, types.PhotoCachedSize, types.PhotoStrippedSize)): - return None - - loc = photo_size.location - - if not isinstance(loc, types.FileLocation): - return None - - return PhotoSize( - file_id=encode( - pack( - "