mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-29 04:43:45 +03:00
Update send_file to support grouping any file type (#1620)
This commit is contained in:
parent
e1d2c81dca
commit
ba3a090a80
|
@ -308,41 +308,26 @@ class UploadMethods:
|
||||||
caption = ''
|
caption = ''
|
||||||
|
|
||||||
# First check if the user passed an iterable, in which case
|
# First check if the user passed an iterable, in which case
|
||||||
# we may want to send as an album if all are photo files.
|
# we may want to send grouped.
|
||||||
if utils.is_list_like(file):
|
if utils.is_list_like(file):
|
||||||
media_captions = []
|
|
||||||
document_captions = []
|
|
||||||
if utils.is_list_like(caption):
|
if utils.is_list_like(caption):
|
||||||
captions = caption
|
captions = caption
|
||||||
else:
|
else:
|
||||||
captions = [caption]
|
captions = [caption]
|
||||||
|
|
||||||
# TODO Fix progress_callback
|
|
||||||
media = []
|
|
||||||
if force_document:
|
|
||||||
documents = file
|
|
||||||
else:
|
|
||||||
documents = []
|
|
||||||
for doc, cap in itertools.zip_longest(file, captions):
|
|
||||||
if utils.is_image(doc) or utils.is_video(doc):
|
|
||||||
media.append(doc)
|
|
||||||
media_captions.append(cap)
|
|
||||||
else:
|
|
||||||
documents.append(doc)
|
|
||||||
document_captions.append(cap)
|
|
||||||
|
|
||||||
result = []
|
result = []
|
||||||
while media:
|
while file:
|
||||||
result += await self._send_album(
|
result += await self._send_album(
|
||||||
entity, media[:10], caption=media_captions[:10],
|
entity, file[:10], caption=captions[:10],
|
||||||
progress_callback=progress_callback, reply_to=reply_to,
|
progress_callback=progress_callback, reply_to=reply_to,
|
||||||
parse_mode=parse_mode, silent=silent, schedule=schedule,
|
parse_mode=parse_mode, silent=silent, schedule=schedule,
|
||||||
supports_streaming=supports_streaming, clear_draft=clear_draft
|
supports_streaming=supports_streaming, clear_draft=clear_draft,
|
||||||
|
force_document=force_document
|
||||||
)
|
)
|
||||||
media = media[10:]
|
file = file[10:]
|
||||||
media_captions = media_captions[10:]
|
captions = captions[10:]
|
||||||
|
|
||||||
for doc, cap in zip(documents, captions):
|
for doc, cap in zip(file, captions):
|
||||||
result.append(await self.send_file(
|
result.append(await self.send_file(
|
||||||
entity, doc, allow_cache=allow_cache,
|
entity, doc, allow_cache=allow_cache,
|
||||||
caption=cap, force_document=force_document,
|
caption=cap, force_document=force_document,
|
||||||
|
@ -389,7 +374,8 @@ class UploadMethods:
|
||||||
async def _send_album(self: 'TelegramClient', entity, files, caption='',
|
async def _send_album(self: 'TelegramClient', entity, files, caption='',
|
||||||
progress_callback=None, reply_to=None,
|
progress_callback=None, reply_to=None,
|
||||||
parse_mode=(), silent=None, schedule=None,
|
parse_mode=(), silent=None, schedule=None,
|
||||||
supports_streaming=None, clear_draft=None):
|
supports_streaming=None, clear_draft=None,
|
||||||
|
force_document=False):
|
||||||
"""Specialized version of .send_file for albums"""
|
"""Specialized version of .send_file for albums"""
|
||||||
# We don't care if the user wants to avoid cache, we will use it
|
# We don't care if the user wants to avoid cache, we will use it
|
||||||
# anyway. Why? The cached version will be exactly the same thing
|
# anyway. Why? The cached version will be exactly the same thing
|
||||||
|
@ -418,7 +404,8 @@ class UploadMethods:
|
||||||
# make it `raise MediaInvalidError`, so we need to upload
|
# make it `raise MediaInvalidError`, so we need to upload
|
||||||
# it as media and then convert that to :tl:`InputMediaPhoto`.
|
# it as media and then convert that to :tl:`InputMediaPhoto`.
|
||||||
fh, fm, _ = await self._file_to_media(
|
fh, fm, _ = await self._file_to_media(
|
||||||
file, supports_streaming=supports_streaming)
|
file, supports_streaming=supports_streaming,
|
||||||
|
force_document=force_document)
|
||||||
if isinstance(fm, types.InputMediaUploadedPhoto):
|
if isinstance(fm, types.InputMediaUploadedPhoto):
|
||||||
r = await self(functions.messages.UploadMediaRequest(
|
r = await self(functions.messages.UploadMediaRequest(
|
||||||
entity, media=fm
|
entity, media=fm
|
||||||
|
|
Loading…
Reference in New Issue
Block a user