Большое видео размером более 50 МБ в aiogram

Как отправить большое видео размером более 50 МБ по URL-адресу в aiogram, используя answer_video(url)
Я получаю сообщение об ошибке, если размер видео превышает 50 МБ. aiogram.utils.exceptions.InvalidHTTPUrlContent: Failed to get http url content


Ответы (2 шт):

Автор решения: Timofey

Telegram API имеет определенные ограничения на размер файлов, для видео это составляет 50 мб.

Это ограничение возможно обойти, но для этого придется создавать локальный сервер, используя Telegram Bot API.

  1. Установка Telegram Bot API.

Хорошая инструкция с нужными командами для Вашей ОС находится по этой ссылке: https://tdlib.github.io/telegram-bot-api/build.html

После установки, необходимо запустить локальный сервер. Переходим в папку build и прописываем команду:

./telegram-bot-api --local --api-id=<API-ID> --api-hash=<API-HASH>

По этой ссылке есть информация как получить API-ID и API-HASH

  1. Настраиваем aiogram бота.
import asyncio
from aiogram import Bot, Dispatcher, F
from aiogram.types import Message
from aiogram.client.session.aiohttp import AiohttpSession
from aiogram.client.telegram import TelegramAPIServer 

API_TOKEN = '<API_TOKEN>'
session = AiohttpSession(
    api=TelegramAPIServer.from_base("http://localhost:8081",
    is_local=True))
bot = Bot(token=API_TOKEN, session=session)
dp = Dispatcher()

@dp.message(F.video)
async def send_video(message: Message):
    audio = message.video
    file_id = video.file_id
    file = await message.bot.get_file(file_id)

    file_path = file.file_path
    download_path = "video/video_message.mp4"

    await message.bot.download_file(file_path, download_path)

    await message.answer("Ваше видео принято")

async def main():
    await dp.start_polling(bot)

if __name__ == "__main__":
    asyncio.run(main())

API_TOKEN - Это токен Вашего бота.

Теперь возможно отправлять видео размером до 2 ГБ.

Ответ написан, с использованием статьи с habr. Здесь Вы сможете найти более подробную информацию об этом.

→ Ссылка