Skip to content

Commit 0d12d8c

Browse files
Add support for in-memory uploads in send_media_group (pyrogram#519)
* Add support for in-memory uploads for send_media_group * update input_media_photo docs * update type hints Co-authored-by: Dan <14043624+delivrance@users.noreply.github.com>
1 parent 317685c commit 0d12d8c

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

pyrogram/methods/messages/send_media_group.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import logging
2020
import os
2121
import re
22+
import io
2223
from typing import Union, List
2324

2425
from pyrogram import raw
@@ -87,7 +88,7 @@ async def send_media_group(
8788

8889
for i in media:
8990
if isinstance(i, types.InputMediaPhoto):
90-
if os.path.isfile(i.media):
91+
if os.path.isfile(i.media) or isinstance(i.media, io.IOBase):
9192
media = await self.send(
9293
raw.functions.messages.UploadMedia(
9394
peer=await self.resolve_peer(chat_id),
@@ -124,7 +125,7 @@ async def send_media_group(
124125
else:
125126
media = utils.get_input_media_from_file_id(i.media, FileType.PHOTO)
126127
elif isinstance(i, types.InputMediaVideo):
127-
if os.path.isfile(i.media):
128+
if os.path.isfile(i.media) or isinstance(i.media, io.IOBase):
128129
media = await self.send(
129130
raw.functions.messages.UploadMedia(
130131
peer=await self.resolve_peer(chat_id),

pyrogram/types/input_media/input_media_photo.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
# You should have received a copy of the GNU Lesser General Public License
1717
# along with Pyrogram. If not, see <http://www.gnu.org/licenses/>.
1818

19-
from typing import Optional, List
19+
from typing import Optional, List, Union, BinaryIO
2020

2121
from .input_media import InputMedia
2222
from ..messages_and_media import MessageEntity
@@ -27,10 +27,11 @@ class InputMediaPhoto(InputMedia):
2727
It is intended to be used with :obj:`~pyrogram.Client.send_media_group`.
2828
2929
Parameters:
30-
media (``str``):
30+
media (``str`` | ``BinaryIO``):
3131
Photo to send.
3232
Pass a file_id as string to send a photo that exists on the Telegram servers or
3333
pass a file path as string to upload a new photo that exists on your local machine or
34+
pass a binary file-like object with its attribute “.name” set for in-memory uploads or
3435
pass an HTTP URL as a string for Telegram to get a photo from the Internet.
3536
3637
caption (``str``, *optional*):
@@ -50,7 +51,7 @@ class InputMediaPhoto(InputMedia):
5051

5152
def __init__(
5253
self,
53-
media: str,
54+
media: Union[str, BinaryIO],
5455
caption: str = "",
5556
parse_mode: Optional[str] = object,
5657
caption_entities: List[MessageEntity] = None

0 commit comments

Comments
 (0)