Как скачивать и отправлять это видео одновременно. Aiogram yt-dlp

Рейтинг: 0Ответов: 1Опубликовано: 25.05.2023

У меня есть бот который скачивает видео с ютуба, но делает это очень медленно, одна из причин это то что бот сначала сохроняет файл на компьютер, а затем отправляет через телеграм. Есть ли способ во время скачивание видео уже скачанные части отправлять в телеграм. Для скачивание видео с ютуба использую yt-dlp:

def download_video(url: str):
    try:
        ydl_opts = {
            'outtmpl': 'videos/%(id)s.%(ext)s',
            'quiet': True,
            'no_warnings': True
        }
        with YoutubeDL(ydl_opts) as ydl:
            info = ydl.extract_info(url, download=False)
            ydl.download([url])
        return {
            'path': f'videos/{info["id"]}.mp4'
        }
    except Exception as err:
        print(err)
        return 'error'

код для отправки:

await message.reply('Скачивание началось')
data = utube.download_video(url=v_url)
if data == 'error':
    await message.reply('Ой ой ой что то пошло не так... ')
    return
await message.reply_video(video=open(data['path'], 'rb'),
                          caption=f'[👉Тык👈](https://t.me/ttDownloadPyBot)',
                          parse_mode='MarkdownV2')
os.remove(data['path'])

Ответы

▲ 0

Как вариант ускорения можно сначала загружать видео плохого качества и отправлять его, затем скачивать видео более хорошего качества, и заменять в сообщении видео плохого качества на более лучшее.

Либо делить видео на фрагменты. Условно говоря - разделить видео на 4 фрагмента и параллельно их скачивать, затем склеить и отправить видео.

P.S. Можно скомбинировать два этих способа.

P.S.S Вариант скачивания и одновременной загрузки в тг смутно представляется.