Skip to content

Commit e85b47c

Browse files
SpEcHiDeDavideGalileidelivrance
authored
Follow-Up: 4398cbb e192350
Co-authored-by: Davide Galilei <[email protected]> Co-authored-by: Dan <[email protected]>
1 parent dc473bc commit e85b47c

File tree

2 files changed

+58
-54
lines changed

2 files changed

+58
-54
lines changed

pyrogram/methods/messages/edit_inline_media.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ async def edit_inline_media(
108108
spoiler=media.has_spoiler
109109
)
110110
else:
111-
media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO)
111+
media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO, has_spoiler=media.has_spoiler)
112112
elif isinstance(media, types.InputMediaVideo):
113113
if is_uploaded_file:
114114
media = raw.types.InputMediaUploadedDocument(
@@ -117,34 +117,34 @@ async def edit_inline_media(
117117
file=await self.save_file(media.media),
118118
spoiler=media.has_spoiler,
119119
attributes=[
120-
raw.types.DocumentAttributeVideo(
121-
supports_streaming=media.supports_streaming or None,
122-
duration=media.duration,
123-
w=media.width,
124-
h=media.height
125-
)
126-
] + filename_attribute
120+
raw.types.DocumentAttributeVideo(
121+
supports_streaming=media.supports_streaming or None,
122+
duration=media.duration,
123+
w=media.width,
124+
h=media.height
125+
)
126+
] + filename_attribute
127127
)
128128
elif is_external_url:
129129
media = raw.types.InputMediaDocumentExternal(
130130
url=media.media,
131131
spoiler=media.has_spoiler
132132
)
133133
else:
134-
media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO)
134+
media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO, has_spoiler=media.has_spoiler)
135135
elif isinstance(media, types.InputMediaAudio):
136136
if is_uploaded_file:
137137
media = raw.types.InputMediaUploadedDocument(
138138
mime_type=(None if is_bytes_io else self.guess_mime_type(media.media)) or "audio/mpeg",
139139
thumb=await self.save_file(media.thumb),
140140
file=await self.save_file(media.media),
141141
attributes=[
142-
raw.types.DocumentAttributeAudio(
143-
duration=media.duration,
144-
performer=media.performer,
145-
title=media.title
146-
)
147-
] + filename_attribute
142+
raw.types.DocumentAttributeAudio(
143+
duration=media.duration,
144+
performer=media.performer,
145+
title=media.title
146+
)
147+
] + filename_attribute
148148
)
149149
elif is_external_url:
150150
media = raw.types.InputMediaDocumentExternal(
@@ -160,14 +160,14 @@ async def edit_inline_media(
160160
file=await self.save_file(media.media),
161161
spoiler=media.has_spoiler,
162162
attributes=[
163-
raw.types.DocumentAttributeVideo(
164-
supports_streaming=True,
165-
duration=media.duration,
166-
w=media.width,
167-
h=media.height
168-
),
169-
raw.types.DocumentAttributeAnimated()
170-
] + filename_attribute,
163+
raw.types.DocumentAttributeVideo(
164+
supports_streaming=True,
165+
duration=media.duration,
166+
w=media.width,
167+
h=media.height
168+
),
169+
raw.types.DocumentAttributeAnimated()
170+
] + filename_attribute,
171171
nosound_video=True,
172172
force_file=False
173173
)

pyrogram/methods/messages/edit_message_media.py

Lines changed: 35 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,25 @@ async def edit_message_media(
103103
if caption is not None:
104104
message, entities = (await utils.parse_text_entities(self, caption, parse_mode, caption_entities)).values()
105105

106+
is_bytes_io = isinstance(media.media, io.BytesIO)
107+
is_uploaded_file = is_bytes_io or os.path.isfile(media.media)
108+
109+
is_external_url = not is_uploaded_file and re.match("^https?://", media.media)
110+
111+
if is_bytes_io and not hasattr(media.media, "name"):
112+
media.media.name = "media"
113+
114+
if is_uploaded_file:
115+
filename_attribute = [
116+
raw.types.DocumentAttributeFilename(
117+
file_name=file_name or (media.media.name if is_bytes_io else os.path.basename(media.media))
118+
)
119+
]
120+
else:
121+
filename_attribute = []
122+
106123
if isinstance(media, types.InputMediaPhoto):
107-
if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media):
124+
if is_uploaded_file:
108125
uploaded_media = await self.invoke(
109126
raw.functions.messages.UploadMedia(
110127
business_connection_id=None, # TODO
@@ -124,15 +141,15 @@ async def edit_message_media(
124141
),
125142
spoiler=media.has_spoiler
126143
)
127-
elif re.match("^https?://", media.media):
144+
elif is_external_url:
128145
media = raw.types.InputMediaPhotoExternal(
129146
url=media.media,
130147
spoiler=media.has_spoiler
131148
)
132149
else:
133150
media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO, has_spoiler=media.has_spoiler)
134151
elif isinstance(media, types.InputMediaVideo):
135-
if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media):
152+
if is_uploaded_file:
136153
uploaded_media = await self.invoke(
137154
raw.functions.messages.UploadMedia(
138155
business_connection_id=None, # TODO
@@ -149,10 +166,7 @@ async def edit_message_media(
149166
w=media.width,
150167
h=media.height
151168
),
152-
raw.types.DocumentAttributeFilename(
153-
file_name=file_name or os.path.basename(media.media)
154-
)
155-
],
169+
] + filename_attribute,
156170
nosound_video=not media.disable_content_type_detection,
157171
force_file=media.disable_content_type_detection or None,
158172
)
@@ -167,15 +181,15 @@ async def edit_message_media(
167181
),
168182
spoiler=media.has_spoiler
169183
)
170-
elif re.match("^https?://", media.media):
184+
elif is_external_url:
171185
media = raw.types.InputMediaDocumentExternal(
172186
url=media.media,
173187
spoiler=media.has_spoiler
174188
)
175189
else:
176-
media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO)
190+
media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO, has_spoiler=media.has_spoiler)
177191
elif isinstance(media, types.InputMediaAudio):
178-
if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media):
192+
if is_uploaded_file:
179193
media = await self.invoke(
180194
raw.functions.messages.UploadMedia(
181195
business_connection_id=None, # TODO
@@ -190,10 +204,7 @@ async def edit_message_media(
190204
performer=media.performer,
191205
title=media.title
192206
),
193-
raw.types.DocumentAttributeFilename(
194-
file_name=file_name or os.path.basename(media.media)
195-
)
196-
]
207+
] + filename_attribute,
197208
)
198209
)
199210
)
@@ -205,14 +216,14 @@ async def edit_message_media(
205216
file_reference=media.document.file_reference
206217
)
207218
)
208-
elif re.match("^https?://", media.media):
219+
elif is_external_url:
209220
media = raw.types.InputMediaDocumentExternal(
210221
url=media.media
211222
)
212223
else:
213224
media = utils.get_input_media_from_file_id(media.media, FileType.AUDIO)
214225
elif isinstance(media, types.InputMediaAnimation):
215-
if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media):
226+
if is_uploaded_file:
216227
uploaded_media = await self.invoke(
217228
raw.functions.messages.UploadMedia(
218229
business_connection_id=None, # TODO
@@ -229,11 +240,8 @@ async def edit_message_media(
229240
w=media.width,
230241
h=media.height
231242
),
232-
raw.types.DocumentAttributeFilename(
233-
file_name=file_name or os.path.basename(media.media)
234-
),
235-
raw.types.DocumentAttributeAnimated()
236-
]
243+
raw.types.DocumentAttributeAnimated(),
244+
] + filename_attribute,
237245
)
238246
)
239247
)
@@ -246,15 +254,15 @@ async def edit_message_media(
246254
),
247255
spoiler=media.has_spoiler
248256
)
249-
elif re.match("^https?://", media.media):
257+
elif is_external_url:
250258
media = raw.types.InputMediaDocumentExternal(
251259
url=media.media,
252260
spoiler=media.has_spoiler
253261
)
254262
else:
255-
media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION)
263+
media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION, has_spoiler=media.has_spoiler)
256264
elif isinstance(media, types.InputMediaDocument):
257-
if isinstance(media.media, io.BytesIO) or os.path.isfile(media.media):
265+
if is_uploaded_file:
258266
media = await self.invoke(
259267
raw.functions.messages.UploadMedia(
260268
business_connection_id=None, # TODO
@@ -263,12 +271,8 @@ async def edit_message_media(
263271
mime_type=self.guess_mime_type(media.media) or "application/zip",
264272
thumb=await self.save_file(media.thumb),
265273
file=await self.save_file(media.media),
266-
attributes=[
267-
raw.types.DocumentAttributeFilename(
268-
file_name=file_name or os.path.basename(media.media)
269-
)
270-
],
271-
# force_file= #TODO
274+
attributes=filename_attribute,
275+
force_file=True
272276
)
273277
)
274278
)
@@ -280,7 +284,7 @@ async def edit_message_media(
280284
file_reference=media.document.file_reference
281285
)
282286
)
283-
elif re.match("^https?://", media.media):
287+
elif is_external_url:
284288
media = raw.types.InputMediaDocumentExternal(
285289
url=media.media
286290
)

0 commit comments

Comments
 (0)