Skip to content

Commit 6bbd79d

Browse files
committed
Update download_media and util methods to work with new file_id formats
1 parent ad9f610 commit 6bbd79d

4 files changed

Lines changed: 19 additions & 11 deletions

File tree

pyrogram/client/client.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1063,6 +1063,7 @@ def download_worker(self):
10631063
access_hash=data.access_hash,
10641064
thumb_size=data.thumb_size,
10651065
peer_id=data.peer_id,
1066+
peer_access_hash=data.peer_access_hash,
10661067
volume_id=data.volume_id,
10671068
local_id=data.local_id,
10681069
file_size=data.file_size,
@@ -1702,6 +1703,7 @@ def get_file(
17021703
access_hash: int,
17031704
thumb_size: str,
17041705
peer_id: int,
1706+
peer_access_hash: int,
17051707
volume_id: int,
17061708
local_id: int,
17071709
file_size: int,
@@ -1741,7 +1743,10 @@ def get_file(
17411743

17421744
if media_type == 1:
17431745
location = types.InputPeerPhotoFileLocation(
1744-
peer=self.resolve_peer(peer_id),
1746+
peer=types.InputPeerUser(
1747+
user_id=peer_id,
1748+
access_hash=peer_access_hash
1749+
),
17451750
volume_id=volume_id,
17461751
local_id=local_id,
17471752
big=is_big or None

pyrogram/client/ext/file_data.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,17 @@
2020
class FileData:
2121
def __init__(
2222
self, *, media_type: int = None, dc_id: int = None, document_id: int = None, access_hash: int = None,
23-
thumb_size: str = None, peer_id: int = None, volume_id: int = None, local_id: int = None, is_big: bool = None,
24-
file_size: int = None, mime_type: str = None, file_name: str = None, date: int = None
23+
thumb_size: str = None, peer_id: int = None, peer_access_hash: int = None, volume_id: int = None,
24+
local_id: int = None, is_big: bool = None, file_size: int = None, mime_type: str = None, file_name: str = None,
25+
date: int = None
2526
):
2627
self.media_type = media_type
2728
self.dc_id = dc_id
2829
self.document_id = document_id
2930
self.access_hash = access_hash
3031
self.thumb_size = thumb_size
3132
self.peer_id = peer_id
33+
self.peer_access_hash = peer_access_hash
3234
self.volume_id = volume_id
3335
self.local_id = local_id
3436
self.is_big = is_big

pyrogram/client/ext/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,8 @@ def get_input_media_from_file_id(
104104
raise ValueError("This file_id can only be used for download: {}".format(file_id_str))
105105

106106
if media_type == 2:
107-
unpacked = struct.unpack("<iiqqc", decoded)
108-
dc_id, file_id, access_hash, thumb_size = unpacked[1:]
107+
unpacked = struct.unpack("<iiqqqiiii", decoded)
108+
dc_id, file_id, access_hash, volume_id, _, _, type, local_id = unpacked[1:]
109109

110110
return types.InputMediaPhoto(
111111
id=types.InputPhoto(

pyrogram/client/methods/messages/download_media.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -138,29 +138,30 @@ def get_existing_attributes() -> dict:
138138
media_type = decoded[0]
139139

140140
if media_type == 1:
141-
unpacked = struct.unpack("<iiqqib", decoded)
142-
dc_id, peer_id, volume_id, local_id, is_big = unpacked[1:]
141+
unpacked = struct.unpack("<iiqqqiiiqi", decoded)
142+
dc_id, photo_id, _, volume_id, size_type, peer_id, _, peer_access_hash, local_id = unpacked[1:]
143143

144144
data = FileData(
145145
**get_existing_attributes(),
146146
media_type=media_type,
147147
dc_id=dc_id,
148148
peer_id=peer_id,
149+
peer_access_hash=peer_access_hash,
149150
volume_id=volume_id,
150151
local_id=local_id,
151-
is_big=bool(is_big)
152+
is_big=size_type == 3
152153
)
153154
elif media_type in (0, 2, 14):
154-
unpacked = struct.unpack("<iiqqc", decoded)
155-
dc_id, document_id, access_hash, thumb_size = unpacked[1:]
155+
unpacked = struct.unpack("<iiqqqiiii", decoded)
156+
dc_id, document_id, access_hash, volume_id, _, _, thumb_size, local_id = unpacked[1:]
156157

157158
data = FileData(
158159
**get_existing_attributes(),
159160
media_type=media_type,
160161
dc_id=dc_id,
161162
document_id=document_id,
162163
access_hash=access_hash,
163-
thumb_size=thumb_size.decode()
164+
thumb_size=chr(thumb_size)
164165
)
165166
elif media_type in (3, 4, 5, 8, 9, 10, 13):
166167
unpacked = struct.unpack("<iiqq", decoded)

0 commit comments

Comments
 (0)