Большое видео размером более 50 МБ в aiogram
Как отправить большое видео размером более 50 МБ по URL-адресу в aiogram, используя answer_video(url)
Я получаю сообщение об ошибке, если размер видео превышает 50 МБ.
aiogram.utils.exceptions.InvalidHTTPUrlContent: Failed to get http url content
Ответы (2 шт):
https://github.com/tdlib/telegram-bot-api Hi, This link for telegram bot local server
Telegram API имеет определенные ограничения на размер файлов, для видео это составляет 50 мб.
Это ограничение возможно обойти, но для этого придется создавать локальный сервер, используя Telegram Bot API.
- Установка 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
- Настраиваем 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. Здесь Вы сможете найти более подробную информацию об этом.