From fd04648ea01a38ba938243527da6a36c04ed1375 Mon Sep 17 00:00:00 2001 From: Mahesh <44301650+Mahesh0253@users.noreply.github.com> Date: Wed, 12 May 2021 11:59:49 +0530 Subject: [PATCH] Add support for editing inline messages' media using local files (#675) * Fix edit_inline_media for local files * Update edit_inline_media.py * Update edit_inline_media.py Co-authored-by: Dan <14043624+delivrance@users.noreply.github.com> --- .../methods/messages/edit_inline_media.py | 77 +++++++++++++++++-- 1 file changed, 72 insertions(+), 5 deletions(-) diff --git a/pyrogram/methods/messages/edit_inline_media.py b/pyrogram/methods/messages/edit_inline_media.py index 35a1f2fd..13b27366 100644 --- a/pyrogram/methods/messages/edit_inline_media.py +++ b/pyrogram/methods/messages/edit_inline_media.py @@ -16,6 +16,7 @@ # You should have received a copy of the GNU Lesser General Public License # along with Pyrogram. If not, see . +import os import re from pyrogram import raw @@ -72,35 +73,101 @@ class EditInlineMedia(Scaffold): parse_mode = media.parse_mode if isinstance(media, types.InputMediaPhoto): - if re.match("^https?://", media.media): + if os.path.isfile(media.media): + media = raw.types.InputMediaUploadedPhoto( + file=await self.save_file(media.media) + ) + elif re.match("^https?://", media.media): media = raw.types.InputMediaPhotoExternal( url=media.media ) else: media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO) elif isinstance(media, types.InputMediaVideo): - if re.match("^https?://", media.media): + if os.path.isfile(media.media): + media = raw.types.InputMediaUploadedDocument( + mime_type=self.guess_mime_type(media.media) or "video/mp4", + thumb=await self.save_file(media.thumb), + file=await self.save_file(media.media), + attributes=[ + raw.types.DocumentAttributeVideo( + supports_streaming=media.supports_streaming or None, + duration=media.duration, + w=media.width, + h=media.height + ), + raw.types.DocumentAttributeFilename( + file_name=os.path.basename(media.media) + ) + ] + ) + elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( url=media.media ) else: media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO) elif isinstance(media, types.InputMediaAudio): - if re.match("^https?://", media.media): + if os.path.isfile(media.media): + media = raw.types.InputMediaUploadedDocument( + mime_type=self.guess_mime_type(media.media) or "audio/mpeg", + thumb=await self.save_file(media.thumb), + file=await self.save_file(media.media), + attributes=[ + raw.types.DocumentAttributeAudio( + duration=media.duration, + performer=media.performer, + title=media.title + ), + raw.types.DocumentAttributeFilename( + file_name=os.path.basename(media.media) + ) + ] + ) + elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( url=media.media ) else: media = utils.get_input_media_from_file_id(media.media, FileType.AUDIO) elif isinstance(media, types.InputMediaAnimation): - if re.match("^https?://", media.media): + if os.path.isfile(media.media): + media = raw.types.InputMediaUploadedDocument( + mime_type=self.guess_mime_type(media.media) or "video/mp4", + thumb=await self.save_file(media.thumb), + file=await self.save_file(media.media), + attributes=[ + raw.types.DocumentAttributeVideo( + supports_streaming=True, + duration=media.duration, + w=media.width, + h=media.height + ), + raw.types.DocumentAttributeFilename( + file_name=os.path.basename(media.media) + ), + raw.types.DocumentAttributeAnimated() + ] + ) + elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( url=media.media ) else: media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION) elif isinstance(media, types.InputMediaDocument): - if re.match("^https?://", media.media): + if os.path.isfile(media.media): + media = raw.types.InputMediaUploadedDocument( + mime_type=self.guess_mime_type(media.media) or "application/zip", + thumb=await self.save_file(media.thumb), + file=await self.save_file(media.media), + attributes=[ + raw.types.DocumentAttributeFilename( + file_name=os.path.basename(media.media) + ) + ] + ) + elif re.match("^https?://", media.media): media = raw.types.InputMediaDocumentExternal( url=media.media )