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>
This commit is contained in:
Mahesh 2021-05-12 11:59:49 +05:30 committed by GitHub
parent 56e79c10f8
commit fd04648ea0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,6 +16,7 @@
# You should have received a copy of the GNU Lesser General Public License # You should have received a copy of the GNU Lesser General Public License
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>. # along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
import os
import re import re
from pyrogram import raw from pyrogram import raw
@ -72,35 +73,101 @@ class EditInlineMedia(Scaffold):
parse_mode = media.parse_mode parse_mode = media.parse_mode
if isinstance(media, types.InputMediaPhoto): 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( media = raw.types.InputMediaPhotoExternal(
url=media.media url=media.media
) )
else: else:
media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO) media = utils.get_input_media_from_file_id(media.media, FileType.PHOTO)
elif isinstance(media, types.InputMediaVideo): 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( media = raw.types.InputMediaDocumentExternal(
url=media.media url=media.media
) )
else: else:
media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO) media = utils.get_input_media_from_file_id(media.media, FileType.VIDEO)
elif isinstance(media, types.InputMediaAudio): 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( media = raw.types.InputMediaDocumentExternal(
url=media.media url=media.media
) )
else: else:
media = utils.get_input_media_from_file_id(media.media, FileType.AUDIO) media = utils.get_input_media_from_file_id(media.media, FileType.AUDIO)
elif isinstance(media, types.InputMediaAnimation): 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( media = raw.types.InputMediaDocumentExternal(
url=media.media url=media.media
) )
else: else:
media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION) media = utils.get_input_media_from_file_id(media.media, FileType.ANIMATION)
elif isinstance(media, types.InputMediaDocument): 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( media = raw.types.InputMediaDocumentExternal(
url=media.media url=media.media
) )