Асинхронность pytube

ZaMyR

Новичок
Пользователь
Янв 30, 2022
1
0
1
Я делал бота который скачивает видео с ютуба, есть маленкая проблема который не могу долгое время справится с загрузкой видео асинхронно. когда скачивает видео бот не может ответить на все запросы который которые поступает через телеграм. когда закончится загрузка видео из ютуба тогда фукциянурует все команды. если кто вкурсе можете помоч с проблемой?

Python:
from pyrogram import Client, filters
from pytube import YouTube
import subprocess
import os
import asyncio

async def download(url, client, message):
    file = YouTube(url).streams.get_by_itag(18).download('down/')
    pyt = YouTube(url)
    video_input_path = file
    img_output_path = (file + '.jpg')
    subprocess.call(['ffmpeg', '-y', '-i', video_input_path, '-ss', '00:00:00.000', '-vframes', '1', img_output_path])
    await message.reply("<b>Отправка телеграм...</b>\n")
    await client.send_video(message.chat.id,
        reply_to_message_id=message.message_id,
        video=file,
        thumb=img_output_path,
        caption=f'{pyt.title}'
        )
    await message.delete()
    os.remove(file)
    os.remove(file + '.jpg')


@Client.on_message(filters.command(['ytdown', 'yt'], ["."]) & filters.me)
async def youdown(client, message):
    url = ' '.join(message.command[1:])
    await message.reply('<b>Загрузка видео...</b>\n')
    await message.delete()
    await asyncio.get_event_loop().create_task(download(url, client, message))
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Запускать скачивание в отдельном потоке например
 

Форум IT Специалистов